2014-07-04 15 views
0

我試圖顯示/隱藏與用戶喜歡某個頁面相關的div標籤。這裏是我的代碼:Facebook Canvas應用程序錯誤:必須使用活動的訪問令牌來查詢有關當前用戶的信息

var token=''; 

var userId=""; 
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : '551162755011927', 
      status  : true, 
      xfbml  : true, 
      version : 'v2.0', 
      scope: 'user_likes', 
     }); 

     FB.getLoginStatus(function(response){ 

      console.log("Token:"+response.authResponse.accessToken); 
      console.log("User ID:"+response.authResponse.userID); 

      token=response.authResponse.accessToken; 



     }); 


     FB.api(
     "/me/likes/PageName", 
     function (response) { 
     if (response && !response.error) { 
     /* handle the result */ 

     console.log("User likey!"); 

     //document.getElementById('nolikey').style.display = "none"; 
     document.getElementById('likey').style.display = "block"; 

     } 
     else 
     { 
     console.log("User no likey :("+response.error.message); 

     document.getElementById('likey').style.display = "none"; 
     document.getElementById('nolikey').style.display = "block"; 
     } 
    } 
,{access_token: token}); 

我不斷收到此錯誤:「一個積極的訪問令牌必須用於查詢當前用戶的信息。」

我在做什麼錯?

+0

嘗試移動'FB.api'呼叫,檢查等是回調getLoginStatus內 - 目前您正試圖檢查您登錄之前調用API – madebydavid

+0

@madebydavid不再有相同的錯誤。現在它說:「(#114)一個ID必須是一個有效的ID字符串(例如,」123「)」 –

+0

啊,你需要傳遞頁面ID到/我/不喜歡名字 – madebydavid

回答

1

當前,代碼在檢查用戶登錄並接收令牌變量之前調用FB API,因此您應該將FB.api呼叫移動到getLoginStatus的回調中。

此外,當檢查用戶是否喜歡頁面時,您需要按頁面ID進行查詢,而不是按名稱進行查詢。

這樣的:

FB.getLoginStatus(function(response){ 

    console.log("Token:"+response.authResponse.accessToken); 
    console.log("User ID:"+response.authResponse.userID); 

    token=response.authResponse.accessToken; 

    var pageID = 123; 

    FB.api(
     "/me/likes/" + pageID, 
     function (response) { 
      if (response && !response.error) { 
       /* handle the result */ 
       console.log("User likey!"); 
       //document.getElementById('nolikey').style.display = "none"; 
       document.getElementById('likey').style.display = "block"; 
      } else { 
       console.log("User no likey :("+response.error.message); 
       document.getElementById('likey').style.display = "none"; 
       document.getElementById('nolikey').style.display = "block"; 
      } 
     } 
    ,{access_token: token}); 

}); 
相關問題