2011-10-07 12 views
5

Trong khi phát triển một ứng dụng máy tính để bàn cần truy cập API twitter, một cách nào đó phải vượt qua khóa API (ứng dụng khóa người tiêu dùng cụ thể và bí mật người tiêu dùng) cho ứng dụng cho người dùng. TOS API của Twitter tuyên bố rằng khóa API của ứng dụng không thể được công bố công khai và nếu điều đó xảy ra, chúng sẽ thiết lập lại nó. Khi ứng dụng đó nằm trong GPL, có nghĩa là nhà phát triển cần cung cấp mã nguồn cho người dùng, người dùng đó sẽ có thể lấy khóa API mà không có sẵn công khai như thế nào? Có cách nào tiêu chuẩn để xử lý vấn đề này không? Cảm ơn.Cách chuẩn để xử lý các khóa API twitter trong các ứng dụng máy tính để bàn GPL là gì?

Chỉnh sửa: Để làm rõ tình hình, tôi đã lưu trữ chúng ở dạng văn bản thuần túy trong mã của tôi cho cree.py cho đến nay là một quyết định có ý thức. Nhưng nhóm hỗ trợ Twitter hôm qua đã liên lạc với tôi rằng họ đã lấy lại chìa khóa của tôi và lý do của họ là như sau:

C. Bạn không nên lấy chìa khóa hoặc bí mật người tiêu dùng của nhà phát triển khác kiểm soát của nhà phát triển đó. Các khóa và bí mật bị xâm nhập sẽ được đặt lại bởi Twitter. Ví dụ: các dịch vụ trực tuyến yêu cầu các giá trị này để cung cấp dịch vụ "thương hiệu tweet" không được phép. https://dev.twitter.com/terms/api-terms Nếu khóa của ứng dụng được đăng công khai, nó cho phép các bên bên ngoài xâm nhập quyền truy cập API của ứng dụng. Điều này thể hiện một nguy cơ lạm dụng rất lớn, và như vậy chúng tôi đã thiết lập lại các khóa API của bạn. Hãy cẩn thận để đảm bảo rằng các khóa này không được đăng công khai một lần nữa.

Cảm ơn, Twitter Policy API

+0

Vâng, nếu twitter khăng khăng bảo vệ bạn, bạn sẽ phải phá vỡ cree.py trong hai phần, một phần là máy chủ proxy được duy trì bởi bạn và bạn chỉ qua mọi biến thể cree.py hỏi twitter. Nếu không, bạn nên có mỗi người muốn sử dụng cree.py có bộ khóa của họ – adamo

+0

Vâng họ đã khá tuyệt đối về "hệ thống danh dự" vi phạm TOS của họ. Tôi đoán API của họ, quy tắc của họ. Proxying tất cả các yêu cầu sẽ là cồng kềnh, tôi đoán tôi chỉ có thể thiết lập một máy chủ cho ăn API ứng dụng chính trên chạy đầu tiên cho mỗi khách hàng. Nhưng có đủ các ứng dụng máy tính để bàn GPL truy cập vào API twitter (tức là khách hàng twitter) vì vậy tôi đang tìm kiếm những suy nghĩ về quy trình "chuẩn". –

Trả lời

1

Vâng, TTYtter rõ ràng sử dụng hệ thống danh dự:

# yes, this is plaintext. obfuscation would be ludicrously easy to crack, 
# and there is no way to hide them effectively or fully in a Perl script. 
# so be a good neighbour and leave this the fark alone, okay? stealing 
# credentials is mean and inconvenient to users. this is blessed by 
# arrangement with Twitter. don't be a d*ck. thanks for your cooperation. 
$oauthkey = (!length($oauthkey) || $oauthkey eq 'X') ? 
     "XXXXXXXXXXXXXXXXXXXXX" : $oauthkey; 
$oauthsecret = (!length($oauthsecret) || $oauthsecret eq 'X') ? 
     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" : $oauthsecret; 

(Tôi đã thay thế các phím thực tế với Xs, để làm cho nó một chút ít khả năng là bất cứ ai sẽ gặp rắc rối để lạm dụng chúng, nhưng hãy yên tâm rằng chúng có mặt đầy đủ trong nguồn thực tế!)

Ngoài ra, tôi không thấy bất cứ điều gì trong số Rules of the Road thực sự yêu cầu bạn để giữ những điều này bí mật: điều gần nhất tôi thấy là tuyên bố "Các phím và bí mật bị xâm nhập sẽ được đặt lại bởi Twitter."; họ không bao giờ thực sự nói những gì "bị xâm nhập" có nghĩa là, mặc dù.

+0

Tôi đã cập nhật câu hỏi để làm rõ thêm. Tôi đã sử dụng hệ thống danh dự trong 7 tháng và nó đã hoạt động, nhưng hỗ trợ API twitter ngày hôm qua đã quyết định rằng nó nên "bảo vệ" cho tôi và lấy lại chìa khóa của tôi. –

1

Tôi có thể dày đặc ở đây, nhưng tại sao bạn không lưu trữ chúng trong tệp cấu hình, sổ đăng ký Windows vv và tải chúng từ đó? Sau đó phân phối ứng dụng mà không cần tệp và bạn đã hoàn tất.

+0

Vấn đề với kế hoạch này là nó đòi hỏi mọi người dùng phải đi lấy khóa API của riêng họ. Mà có lẽ họ sẽ không muốn làm. Đó là một giải pháp hợp lý nếu bạn đang viết một thư viện mà bạn mong đợi người dùng khác tự cấu hình, nhưng không tuyệt vời như vậy nếu bạn mong đợi phần lớn người dùng muốn tải xuống các tệp nhị phân và chạy chúng. –

+0

Bạn có thể điều chỉnh ứng dụng của mình để cho phép bạn sử dụng access_token và access_token_secret một lần (ví dụ: sử dụng xác thực OOB/PIN) rồi lưu trữ thông tin đăng nhập. Từ đó trở đi (và khi khởi động lại ứng dụng), chúng được xác thực. – reiniero

+0

Điều gì @me_and có nghĩa là khóa API wih là khóa người tiêu dùng và bí mật của người tiêu dùng, không phải mã thông báo truy cập và bí mật. Như bạn nói, mã thông báo truy cập và bí mật được xử lý thông qua xác thực OOB/PIN trong lần chạy đầu tiên. Đây không phải là vấn đề. Tuy nhiên, câu hỏi này là về cách phân phối và lưu trữ khóa người tiêu dùng và bí mật của người tiêu dùng trong các ứng dụng dành cho máy tính để bàn. –

0

Có lẽ giải pháp khác sẽ được sử dụng một máy chủ, máy chủ tương tác với api twitter, và quý vị yêu cầu thông tin cho máy chủ của bạn với ứng dụng desktop của bạn

Như vậy, chìa khóa API là chỉ được lưu trữ trên máy chủ và không phải bất kỳ người dùng nào cũng có thể nhận được.