是這樣的

前幾天在寫 Facebook APP 的時候有使用到 FB.login

因為那天 FB.getLoginStatus 莫名奇妙壞去

只好每次開頁面都呼叫 FB.login 出來檢查一次

但這其實是個很不智的作法,因為會有....

1.會跳出視窗,某些瀏覽器會擋

2.會有錯誤訊息,說你沒有權限

而這篇文章就是來解決第二點的

原本的程式如下 : 

FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            is_fan();
        } else if (response.status === 'not_authorized') {
            window.open('https://www.facebook.com/dialog/oauth?client_id=你的APP ID&redirect_uri=http://apps.facebook.com/你的APP命名空間/&scope=email,read_stream', '_top');
        } else {
            window.open('https://www.facebook.com/dialog/oauth?client_id=你的APP ID&redirect_uri=http://apps.facebook.com/你的APP命名空間/&scope=email,read_stream', '_top');
        }
    });

但是某一天他突然死了,隔一天又活了....我也不知道為什麼

然後在他死的時候我就換成.... 

   FB.login(function (response) {
       if (response.authResponse) {
           //is_fan();
       } else {

       }
   }, { scope: 'email' });

結果就出現下面的錯誤訊息

untitled.bmp  

死在這行,莫名奇妙 (圖很小,你們也看不清楚)

untitled2.bmp  

 

然後這好像是 facebook 的 bug 

請看 Bug Tracker

http://bugs.developers.facebook.net/show_bug.cgi?id=19042

FB一直沒修好,也不指望你修了,於是自己找答案

 

解決方式 : 

http://stackoverflow.com/questions/7280007/permission-denied-error-in-all-js

 

請在 

FB.init 之後加上下面這段

// this code solves the issue 
FB.UIServer.setLoadedNode = function (a, b) { 
   FB.UIServer._loadedNodes[a.id] = b; 
};


就可以解決沒有權限的問題囉~~

    全站熱搜

    小雕 發表在 痞客邦 留言(2) 人氣()