2014-05-01 122 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