2013-09-06 61 views
16

Tôi mới tích hợp facebook vào các trang web mà tôi đang cố gắng để tìm mã truy cập dài hạn bằng cách làm theo hướng dẫn tại đây: https://developers.facebook.com/docs/facebook-login/access-tokens/ Ngay cả khi sử dụng đồ thị API Explorer ở đây: https://developers.facebook.com/tools/explorer/ tôi nhập dữ liệu sau và cư nó với AppID và AppSecret của tôi và mã thông báo hiện tại tôi nhận được khi tôi nhấn Get access token ...Không thể lấy mã thông báo truy cập dài hạn bằng cách sử dụng biểu đồ facebook api

GET/oauth/access_token?
grant_type = fb_exchange_token &
client_id = {app-id} & client_secret = {app-bí mật} & fb_exchange_token = {ngắn ngủi-thẻ}

tôi nhận được sự trở lại

{"lỗi": "Phản hồi không hợp lệ"}

Có thể như vậy meone giải thích về những gì tôi có thể làm sai, hoặc các bước chi tiết hơn mà làm việc cho bạn trong việc mua mã thông báo dài hạn này.

Tôi đã cố gắng theo dõi những gì đang xảy ra trong chủ đề này Facebook Page Access Tokens - Do these expire? mà không thành công nữa. Mọi sự trợ giúp sẽ rất được trân trọng.

Cảm ơn bạn đã dành thời gian và trợ giúp. Chúc mừng,

-Ryan

+0

Bạn đang tìm kiếm lâu dài 'người dùng truy cập token' hoặc 'trang truy cập token'? –

Trả lời

22

Bạn không thể nhận được long-lived user token sử dụng Graph API Explorer. Bạn phải thực hiện yêu cầu \GET tới số

https://graph.facebook.com/oauth/access_token? 
grant_type=fb_exchange_token& 
client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token} 

Bạn có thể kiểm tra tương tự trong trình duyệt.

và nếu bạn cần số page access token, bạn có thể có không bao giờ mã thông báo hết hạn. Kiểm tra các câu trả lời được chấp nhận ở đây: What are the Steps to getting a Long Lasting Token For Posting To a Facebook Fan Page from a Server

+0

Cảm ơn rất nhiều! Điều này thực sự không phải là tất cả những gì khác nhau với những gì tôi đã làm, nhưng vì một lý do nào đó, đưa yêu cầu trực tiếp vào thanh url có điều này làm việc cho tôi. Mã thông báo PAge là bước tiếp theo, nhờ liên kết bổ sung! – StafHat

+0

khi tôi gọi nó từ trình duyệt, nó cho tôi một phản hồi, nhưng khi tôi gọi nó bằng cách sử dụng mã php, nó cho tôi một lỗi như sau: 'Error validating access token: Session đã hết hạn vào thứ Sáu, 17-Mar-17 04: 38:48 PDT. Thời gian hiện tại là Thứ Bảy, 10-Jun-17 00:44:35 PDT.', mọi giải pháp cho this.I muốn tìm nạp mã thông báo mới vì mã thông báo cũ đã hết hạn. –

+0

Bạn có thể nhận được 'mã thông báo truy cập người dùng ngắn hạn 'từ luồng [Đăng nhập] (https://developers.facebook.com/docs/facebook-login) đơn giản. –

1

Facebook PHP SDK đã thực hiện phương pháp để nhận mã thông báo tồn tại lâu dài bằng mã thông báo ngắn ngủi, sau khi đăng nhập thành công và có những dấu hiệu ngắn ngủi, đơn giản gọi

$result = $facebook->setExtendedAccessToken(); 

nếu kết quả $ là null, điều đó có nghĩa là bạn có mã thông báo truy cập lâu dài.

9

Vì vậy, tôi nghĩ tôi sẽ xem lại điều này và cung cấp tài liệu tôi đã viết, hy vọng sẽ giúp người khác có được điều này xảy ra!

ONE. Tạo Ứng dụng

Tạo ứng dụng được liên kết với người dùng của trang bạn muốn có quyền truy cập.

HAI.Nhận buộc miếng Thông tin

Sau khi tạo một ứng dụng chúng ta nên có hai phần quan trọng của thông tin:

App ID: AAAAA (nên dài khoảng ~ 15 ký tự)

App Secret: BBBBB (phải dài khoảng ~ 32 ký tự)

Với những điều này bằng cách đi tới https://developers.facebook.com/tools/explorer Đảm bảo chọn đúng Ứng dụng từ Hộp thả xuống ở trên cùng.

Nhấp vào Nhận mã thông báo truy cập và nhận mã thông báo 'mới'.

Tại đây, bạn sẽ cần chọn các quyền thích hợp cho mục đích ứng dụng cụ thể của mình.

CCCCC (nên dài ~ 200 ký tự)

BA. Nhận Long Life Mã (2 tháng)

Sau đó bạn nên có các mảnh thông tin cần thiết để chạy các truy vấn để có được một dài hạn (2 tháng) token:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {app-id} & client_secret = {app-secret} & fb_exchange_token = {short-lived-token}

Thay thế {app-id}, {app-secret} và {short-lived-token} bằng ba bit thông tin bạn đã ghi chú cho đến nay.

Bạn sẽ nhận được một yêu cầu như sau:

https://graph.facebook.com/oauth/access_token?%20grant_type=fb_exchange_token&%20client_id=AAAAA&%20client_secret=BBBBB&%20fb_exchange_token=CCCCC

Nơi truy vấn này vào thanh địa chỉ của trình duyệt Internet. Bạn sẽ nhận được một phản ứng trong cửa sổ trông giống như sau:

access_token = DDDDD & hết hạn = 5184000

DDDDD (nên được ~ 200 ký tự)

BỐN. Kiểm tra Mã (Phần 1)

Nếu bạn nhập một phần tô đậm vào đầu vào trên trang web debug sau:

https://developers.facebook.com/tools/debug/

Nó sẽ cho bạn một hết khoảng 2 tháng.

NĂM. Nhận mã thông báo trang không hết hạn

Bây giờ lưu ý mã thông báo dài mới này, chúng tôi sẽ sử dụng mã này để nhận mã thông báo không hết hạn, trừ khi ứng dụng được liên kết bị xóa khỏi quyền truy cập hoặc xóa của người dùng. Chúng tôi sử dụng một trong hai tên trang hoặc tốt hơn là trang-id khi đưa ra yêu cầu:

Bạn có thể lấy id trang facebook của bạn sử dụng một cái gì đó giống như http://findmyfacebookid.com/ Chúng tôi sẽ đề cập đến id trang của bạn như EEEEE

https://graph.facebook.com/ {page-id}/lĩnh vực = access_token & access_token = {dài live-thẻ}

Bạn sẽ nhận được một yêu cầu như sau:

https://graph.facebook.com/EEEEE/?fields=access_token&access_token=DDDDD

này sẽ trở lại giống như sau: { "access_token": "FFFFF", "id": "131.062.838.468" }

FFFFF (nên dài ~ 200 ký tự)

SIX. Mã thông báo thử nghiệm (Phần 2)

Lấy phần được đánh dấu và nhập nó vào trang gỡ lỗi và bạn sẽ thấy thứ gì đó hiển thị mã không bao giờ hết hạn và bạn đã thành công trong việc mua mã thông báo không bao giờ hết hạn.

SEVEN. Đập tay!

Xin lỗi vì danh sách dài về cách đạt được điều này, nhưng tôi thấy tốt hơn là cung cấp toàn bộ quá trình thay vì chỉ một đoạn mã nhỏ. Hãy cho tôi biết nếu bạn thấy điều này hữu ích hoặc bạn có một cách tốt hơn để đạt được bất kỳ bước nào.

+0

Xin chào @Ryan, điều này không hiệu quả. ứng dụng được tạo không đăng lên facebook nhưng chỉ quản trị viên trang mới có thể xem các bài đăng của nó. – YSY

0

client bên

 if (response.status === 'connected') { 
      { 
       event.preventDefault(); 
       FB.login(function (response) { 
        if (response.authResponse) { 
         var profileId = response.authResponse.userID; 
         var accessToken = response.authResponse.accessToken; 
         var e = response.authResponse.accessToken; 
         document.getElementById('token').innerHTML = e; 
         var profileName = ""; 
         var pagesList = ""; 
         var isPage = 0; 
         var type = "fb"; 
         $.ajax({ 
          url: "WebService1.asmx/getlonToken", 
          type: "POST", 
          dataType: 'json', 
          data: '{accessToken:"' + accessToken + '"}', 
          contentType: "application/json; charset=utf-8", 
          async: true, 
          success: function (response) { 
           accessToken = response.d; 
           document.getElementById('status').innerHTML = accessToken; 
          }, 
          error: function (e) { 
           alert('Error' + e); 
          } 
         }); 



        } 
       }, { scope: 'user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights, read_mailbox' }); 

      } 

Server side

[WebMethod] 
    public string getlonToken(string accessToken) 
    { 
     var fb = new FacebookClient(accessToken); 
     dynamic result = fb.Get("oauth/access_token", new 
      { 
       client_id = 123, 
       client_secret = "123fff45", 
       grant_type = "fb_exchange_token", 
       fb_exchange_token = accessToken, 
       scope = "user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_checkins,friends_checkins,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_religion_politics,friends_religion_politics,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights,ads_management" 
      }); 

     fb.AccessToken = (string)result["access_token"]; 
     return fb.AccessToken; 
    } 
} 
+0

phải tạo một dịch vụ web theo tên WebService1.asmx sau đó đặt mã phía máy chủ trên tệp này –

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