2012-01-25 39 views
13

Mã thông báo truy cập Facebook APP có hết hạn không? Các mã thông báo này khác với mã thông báo USER; chúng được mua như thế này:Hết hạn mã thông báo truy cập ứng dụng Facebook (NOT user)

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={0}&client_secret={1}) 

như được mô tả trong phần Đăng nhập ứng dụng của tài liệu tại http://developers.facebook.com/docs/authentication/.

Có bất kỳ trường hợp nào theo đó chúng sẽ trở thành không hợp lệ không?

NB: Đây KHÔNG phải là câu hỏi về mã thông báo truy cập của USER (được ghi rõ ràng). Có một câu hỏi giống hệt nhau http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire bị đóng nhầm là trùng lặp với một câu hỏi khác về mã thông báo truy cập của USER.

Trả lời

4

Tôi biết rằng một điều kiện sẽ khiến chúng trở thành không hợp lệ là nếu bạn đặt lại Mật khẩu ứng dụng bằng công cụ nhà phát triển Facebook.

Tôi không biết nếu sử dụng phương pháp OAuth để tạo Mã thông báo ứng dụng sẽ khiến nó hết hạn. Tuy nhiên, nếu bạn quét PHP SDK của Facebook, bạn có thể nhận thấy rằng một tổ chức phi hết hạn thẻ ứng dụng được thực hiện bởi APP_ID nối và bí mật:

/** 
    * Returns the access token that should be used for logged out 
    * users when no authorization code is available. 
    * 
    * @return string The application access token, useful for gathering 
    *    public information about users and applications. 
    */ 
    protected function getApplicationAccessToken() { 
    return $this->appId.'|'.$this->apiSecret; 
    } 

CẢNH BÁO: Tôi sẽ không bao giờ sử dụng này trong ứng dụng mã vì nó sẽ xuất bản của bạn Ứng dụng bí mật. Tuy nhiên, trong một môi trường máy chủ tin cậy, nó có vẻ giống như con đường để đi.

Để kiểm tra điều này, tôi đã đi đến công cụ OpenGraph và xóa Mã truy cập của tôi và nhập vào giá trị nối từ mẫu mã. Sau đó, tôi đã truy cập thông tin chi tiết về ứng dụng của mình để xác minh rằng nó sẽ hoạt động:

<APP_ID>/insights/application_active_users 
+0

Cảm ơn, nó hoạt động. Nhưng phương pháp nhận mã thông báo truy cập ứng dụng này là một phương pháp được bảo vệ không phải là một phần của API công cộng. Tôi không thể tin tưởng rằng nó sẽ không thay đổi và sử dụng nó trên một trang web trực tiếp với hàng triệu Người dùng (Facebook nổi tiếng với những thay đổi phá vỡ API công khai, hãy để một mình một cái gì đó như thế này) Có vẻ như mã thông báo truy cập ứng dụng có được từ URL (được đề cập trong câu hỏi) hết hiệu lực, qua đêm tôi bắt đầu thấy ngoại lệ trong bài kiểm tra của mình nhật ký môi trường: Lỗi xác thực mã thông báo truy cập: Phiên đã hết hạn vào thời gian unix 1327539600. Thời gian unix hiện tại là 1327605009. – eugen

+0

Rất ít khả năng Facebook sẽ đột ngột giới thiệu một thay đổi đột phá với SDK bị xử phạt. lộ trình cho phá vỡ những thay đổi todo với thư viện bị xử phạt của họ. Kiểm tra https://developers.facebook.com/roadmap/ thường xuyên. – thesmart

+0

Than ôi, từ kinh nghiệm trước tiên, nó có khả năng chứng kiến ​​những thay đổi phá vỡ API Facebook. Tôi vừa đề cập một ở trên: mã thông báo truy cập ứng dụng DOES hết hạn, mặc dù tài liệu không nêu rõ. Tệ hơn nữa, mã lỗi được trả về là 0 (nghĩa là thành công !?). Mã lỗi phải được coi là một phần của API, nếu không các nhà phát triển sẽ không có biện pháp bảo vệ. BTW, có một nơi với danh sách các mã lỗi Facebook không thay đổi không? – eugen

4

Tạo APP_ACCESS_TOKEN thật sự dễ dàng. Bạn có thể sử dụng của bạn Ví dụ App ID/API KeyApp secret

access_token = YOUR_APP_ID|YOUR_APP_SECRET 

: 1234587968 | bghyuifjk3438483249235903502035023504305

+0

Cảm ơn, tôi biết điều đó. Câu hỏi đặt ra là liệu các mã thông báo có hết hạn không (và nhận xét tiếp theo tôi đã thực hiện rằng nó dường như không trả lại mã lỗi khi chúng thực hiện). – eugen

+0

Không đúng, phần sau không phải là ứng dụng bí mật. Bạn có thể muốn kiểm tra lại nó. –

+0

Vui lòng kiểm tra ngày trên bình luận của tôi. – tildy

27

mỗi sự Facebook documentation:

Một App access token được ký bằng bí mật ứng dụng của bạn và sẽ không hết hạn; nó sẽ bị vô hiệu nếu bạn tái nhập/đặt lại ứng dụng của mình bí mật.

0

Đối với tôi, câu trả lời không tìm thấy mã thông báo không hết hạn, (vì tôi không tin tưởng Facebook), nhưng để nắm bắt mã thông báo hết hạn và đặt lại mà không mất thời gian người dùng của tôi. Tôi tìm thấy điều này và nghĩ rằng bạn có thể muốn kiểm tra xem nó ra.

"Để đảm bảo kinh nghiệm tốt nhất cho người dùng của bạn, ứng dụng của bạn cần phải được chuẩn bị để bắt lỗi cho các kịch bản ở trên. Các mã PHP sau đây cho thấy bạn làm thế nào để xử lý các lỗi này và lấy một mã thông báo truy cập mới.

Khi bạn chuyển hướng người dùng đến hộp thoại xác thực, người dùng sẽ không được nhắc về quyền nếu người dùng đã ủy quyền cho ứng dụng của bạn, Facebook sẽ trả lại cho bạn một mã thông báo truy cập hợp lệ mà không có bất kỳ hộp thoại nào hướng đến người dùng. sau đó người dùng sẽ cần phải ủy quyền lại ứng dụng của bạn để bạn có được access_token."Tài nguyên: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

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