2014-05-01 160 views
0

我正在嘗試使用Facebook API來獲取發佈到用戶牆上的權限。檢查權限facebook應用程序

  • 我問他們的許可,如果他們點擊「不是現在,」我想它返回到我的網頁。
  • 如果他們說好,就會出現一個自定義彈出窗口(facebookPopup)。

下面是如果他們clcik一個「分享」按鈕,會發生什麼

public CheckPermissions() { 
     var permsNeeded = ['publish_stream']; 

     // Function that checks needed user permissions 
     FB.api('/me/permissions', function (response) { 
      var permsArray = response.data[0]; 
      var permsToPrompt = []; 
      for (var i in permsNeeded) { 
       if (permsArray[permsNeeded[i]] == null) { 
        permsToPrompt.push(permsNeeded[i]); 
       } 
      }    
       if (permsToPrompt.length > 0) { 
        promptForPerms(permsToPrompt); 
       } 
       else { 
        facebookPopup(response); 
       } 
      }); 
     // Re-prompt user for missing permissions 
     var promptForPerms = function (perms) { 
       FB.login(function (response) { 
       CheckPermissions(); 
       }, { scope: perms.join(',') }); 
     } 
    } 

我遇到的問題是,如果他們點擊「不是現在」,它讓他們再次提示,因爲我打電話CheckPermissions ()並擊中(permsToPrompt)。如果他們再次點擊「分享」按鈕,我只希望他們被重新推翻。

+0

這是爲什麼用TypeScript標記的? – WiredPrairie

+0

對不起,我的錯誤應該是Javascript – user3214545

回答

1

這裏的東西,你可以使用:

module facebook { 
    var grantedPermissions: { [permission: string]: number }; 

    function checkPermissions(callback?: Function): void { 
     FB.api("/me/permissions", function (response): void { 
      grantedPermissions = response.data[0]; 

      if (callback) { 
       callback(); 
      } 
     }); 
    } 

    export function init(): void { 
     FB.getLoginStatus(function(response): void { 
      if (response.status === "conntected") { 
       checkPermissions(); 
      } 
     }); 
    } 

    export function hasPermission(permission: string): boolean { 
     return grantedPermissions[permission] == 1; 
    } 

    export function getPermission(permission: string, callback?: Function): void { 
     if (hasPermission(permission)) { 
      if (callback) { 
       callback(); 
      } 

      return; 
     } 

     FB.login(function(response): void { 
      checkPermissions(function() { 
       if (callback && hasPermission(permission)) { 
        callback(); 
       } 
      }); 
     }, { scope: permission }); 
    } 
} 

當您啓動頁面調用:

facebook.init(); 

然後你就可以使用這種方式:

button.addEventListener("click", function(event: Event): void { 
    getPermission("publish_stream", fucntion() { 
     // do what ever you want here with the publish_stream permission granted 
    }); 
}); 

請記住這段代碼沒有經過測試,我只寫了它,並沒有實現整個登錄流程...

希望這會有所幫助。

+0

看起來Facebook已經刪除了publish_stream權限並將其與publish_action合併。這意味着您需要在您的應用中添加權限並立即獲得Facebook審覈批准。 P.S.上帝知道Facebook在哪裏與此。即使允許用戶與一些文本共享一個圖像,非常複雜的編碼和facebook SDK也是必須的。 Google+使用起來非常簡單: – arunskrish