2010-02-11 44 views
13

Tôi đang viết một little web utility để đăng cập nhật trạng thái lên Twitter và/hoặc Facebook. Điều đó liên quan đến việc tạo ra 'ứng dụng' với cả hai dịch vụ đó để có được các khóa API và 'bí mật'.Các vấn đề tiềm ẩn khi tiết lộ bí mật API Facebook là gì?

Câu hỏi của tôi là cách bảo vệ tôi thực sự cần giữ bí mật đó - để làm được điều này, bạn dường như cần bí mật tương tác với phần xác thực của dịch vụ để cấp quyền truy cập ứng dụng cho tài khoản của bạn và/hoặc cấp quyền cho phép đăng thông tin cập nhật nhân danh bạn. Tài liệu của Facebook nói để bảo vệ bí mật, nhưng ít nhất one other Facebook utility phân phối khóa API và bí mật trong nguồn. Điều quan trọng cần lưu ý: đây không phải là ứng dụng Facebook chuẩn của bạn chạy trong ngữ cảnh của Facebook, cũng không phải là ứng dụng biên dịch "máy tính để bàn" chuẩn - đó là ứng dụng dựa trên web nhằm mục đích trở thành chạy trên máy chủ web của riêng bạn. Khán giả cho điều này có lẽ nhỏ và hơi phức tạp hơn mức trung bình - vì vậy, một giải pháp thay thế kỹ thuật sẽ là yêu cầu mọi người lấy khóa API của riêng họ và bí mật để sử dụng ứng dụng. Điều đó có vẻ như rất nhiều công việc, tuy nhiên, và một rào cản khá lớn để nhập cảnh cho bất cứ ai sử dụng này.

Bất kỳ ai biết hoặc có bất kỳ thông tin chi tiết nào về vấn đề tôi sẽ đặt cho mình nếu tôi đặt cả bí mật và khóa API trong cấu hình cho ứng dụng của mình và kiểm tra nó vào Github để mọi người xem?

+0

+1 câu hỏi rất hay – Sarfraz

Trả lời

8

Bất kỳ ai có quyền truy cập vào khóa bí mật của bạn đều có quyền kiểm soát hoàn toàn đơn đăng ký của bạn. Trang này hiển thị tất cả các cài đặt quản trị mà họ có thể thay đổi với admin.setAppProperties API call. Điều này có thể bao gồm việc đưa ứng dụng vào chế độ nhà phát triển (vì vậy không ai khác có thể sử dụng nó), thay đổi URL gọi lại (sẽ phá vỡ nó) hoặc tất cả các loại nghịch ngợm khác.

Tôi không chắc tôi hoàn toàn hiểu những gì bạn đang cố gắng làm, nhưng tôi nghĩ nếu bạn xem tài liệu cho session secrets thì bạn có thể tìm thấy giải pháp không liên quan đến việc nhúng khóa bí mật của ứng dụng nhưng vẫn cho phép người dùng tương tác với API. Bí mật phiên được sử dụng bởi Facebook Connect và cho phép thực hiện các cuộc gọi API mà không cần mật khẩu ứng dụng. API calls that can be made with a session secret có xu hướng bị hạn chế đối với người dùng chỉ tương tác với dữ liệu của riêng họ. Cập nhật trạng thái và cấp quyền chắc chắn là điều bạn có thể làm với sự kết hợp bí mật phiên, Kết nối và XFBML.

Và như Paul đã trả lời: chia sẻ bí mật ứng dụng của bạn là trái với điều khoản dịch vụ của Facebook.

4

Bạn sẽ vi phạm thỏa thuận cho phép bạn sử dụng API facebook. Một phần của thỏa thuận đó là bạn giữ bí mật quan trọng của mình. Nếu không, họ sẽ vô hiệu hóa quyền truy cập của bạn cho đến khi bạn đồng ý tuân thủ các quy tắc.

Policy III.7 là rất rõ ràng:

Bạn không phải cung cấp khóa bí mật của mình cho một bên khác, trừ trường hợp bên đó là một đại lý đại diện cho bạn như là một nhà điều hành của ứng dụng của bạn, nhưng bạn không bao giờ phải cung cấp khóa bí mật của bạn cho mạng quảng cáo. Bạn chịu trách nhiệm cho tất cả các hoạt động xảy ra trong số nhận dạng tài khoản của bạn.

http://developers.facebook.com/policy/

Làm người dùng của bạn mỗi nhận được một khóa API, hoặc suy nghĩ lại kiến ​​trúc của bạn. Bạn không muốn facebook chấm dứt quyền truy cập của bạn, và đăng ký một khóa API là trung thực không phải là nhiều công việc.

0

Nếu bạn đang phát triển một phần mềm để người khác sử dụng trên máy chủ web của riêng họ, thì mỗi trang web sử dụng nó sẽ đăng ký dưới dạng một ứng dụng riêng biệt. Bằng cách đó, người dùng sẽ có thể kiểm soát quyền truy cập được cấp cho từng phiên bản mã của bạn, thay vì cấp quyền truy cập cho tất cả các máy chủ web sử dụng nó hoặc không có.

Tạo ứng dụng mới không khó. Chỉ cần truy cập http://www.facebook.com/developers/createapp.php

Các vấn đề liên quan