2014-01-21 23 views
-1

我想這個URL時出現以下錯誤時(只是將其粘貼在瀏覽器中檢查輸出):OAuthException做一個網站查詢

https://graph.facebook.com/search?q=London&type=event&access_token=ACCESS_TOKEN

{ "error": { 
     "message": "(#200) Must have a valid access_token to access this endpoint", 
     "type": "OAuthException", 
     "code": 200 
    } 
} 

我按照this guide得到了ACCESS_TOKEN 。我究竟做錯了什麼?


由於Rahil Arora的小費。這裏是我如何打印出我的訪問令牌:

我把這個放在我的私人網站上。將FB應用程序的公共URL設置爲指向該網頁後,我只需單擊「登錄」按鈕即可。然後有一個彈出窗口允許我的應用程序訪問我的個人數據,瞧!它打印出來的訪問令牌;)

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
</head> 
<body> 
     <button id="login">Login to FB</button> 
     <p>Access token: <span id="token"></span> 
     <script> 
     $(function() { 

      FB.init({ 
       appId  : 'APP-ID', // App ID 
       channelUrl : '', // Channel File 
       status  : true, // check login status 
       cookie  : true, // enable cookies to allow the server to access the session 
       xfbml  : true, // parse XFBML 
       oauth  : true 
      }); 

      FB.Event.subscribe('auth.authResponseChange', function (response) { 
       if (response.status === 'connected') { 
       $('#token').html(response.authResponse.accessToken); 
       } 
      }); 

      $('#login').click(function(e) { 
       FB.login(); 
      }); 

     }); 
     </script> 
</body> 
</html> 

回答

1

您使用的是App Token。您真正需要的是User Access Token

搜索API文檔說:整個頁面,然後將對象

  • 搜索需要一個應用程序訪問令牌。
  • 所有其他端點都需要用戶訪問令牌。

既然您正在尋找一個事件,您需要一個用戶訪問令牌。您可以找到有關生成用戶訪問令牌here的更多詳細信息。

要測試您的查詢,您可以使用Graph API Explorer。它默認爲您提供用戶訪問令牌來測試您的查詢。

+0

奇怪,我認爲公共事件落在了地方的對象之下?關於用戶訪問令牌的文檔如下: '這種訪問令牌在應用程序調用API來代替它們讀取,修改或編寫特定人員的Facebook數據時需要。 ' 但是我只想讀取公開數據 –

+0

不過,您需要訪問令牌,因爲所有Graph API搜索都需要訪問令牌。它在文檔中提到。我使用用戶訪問令牌(在Graph API Explorer上)嘗試了相同的查詢,並且它對我來說非常合適。 –

+0

@ArnabDatta你能解決這個問題嗎? –

0

正如錯誤信息所述,所提供的訪問令牌無效。如果您提供訪問令牌,則該令牌必須有效。否則,你會得到一個錯誤。如果您想要讀取沒有任何令牌的公共數據,請將訪問令牌完全關閉。

訪問令牌只在有限的時間內有效。它們會在一段時間後失效,可能是幾天或幾小時。您需要檢查並詢問新的訪問令牌是否已過期。通常你會得到一個不同的和特定的錯誤代碼。

擁有您要訪問的數據的用戶必須首先授予您的應用訪問權限。這就是您通過OAauth檢索訪問令牌的方式。一旦他撤銷此授權,您的訪問令牌將失效。用戶可以隨時在沒有通知的情況下執行此操作,而讓您獨自處理上述錯誤消息。

底線:你需要挖掘到這一點,進一步調查究竟發生了:

  1. 你確實有一個無效的(永遠有效)令牌
  2. 您的令牌是有效的,但已被吊銷
  3. ...