1

我正在创建一个Android应用程序,您应该可以使用Facebook登录并具有读取和发布权限。我用LoginManager实现它,它运行得很好。这是我的方法登录到Facebook的:是否可以使用Facebook登录管理器以及读取和发布权限登录?

/** 
* Attempts to log the user into facebook and to get an access token. 
*/ 
private void facebookLogin() { 
    callbackManager = CallbackManager.Factory.create(); 

    LoginManager loginManager = LoginManager.getInstance(); 
    loginManager.registerCallback(callbackManager, new FacebookLoginCallback()); 
    loginManager.logInWithReadPermissions(this, Constants.FB_READ_PERMISSIONS); 
    loginManager.logInWithPublishPermissions(this, Constants.FB_PUBLISH_PERMISSIONS); 
} 

我一段时间后发现,虽然这个代码片段将启动对彼此顶部两个独立的Facebook登录,当一个人完成了另一种是仍然在后台。如果我仅以读取权限登录(或仅以发布方式登录),则只需登录一次,这正是我想要的。

但是我确实需要两种类型的权限。我浏览了Facebook Android登录guide,他们声称你应该使用LoginButton,因为它可以存储所需的权限,然后在一个登录中获得所有权限。这是登录管理器不可能的吗?我查看了整个互联网,this是唯一指出登录管理器登录时读取发布,但LoginButton可以同时登录。

这一切是真的吗?将登录从LoginManager更改为LoginButton并不是一项巨大的工作,但我只想知道是否无法通过LoginManager同时登录读取和发布权限,似乎很奇怪,可能。

回答

0

我自己解决了。

我完全误解了facebook登录的工作方式,但是在阅读facebook api后,我终于修复了它。

如果你需要读取和发布权限,你需要在单独的occations上请求它们。当我第一次登录应用程序时,我只需要使用loginManager读取权限(就像我之前所做的那样)。只有当用户向Facebook发布内容时,我才检查用户是否具有发布权限。如果不是,我开始一个新的登录管理器并要求它。

由于用户已经登录一次,用户只需要批准发布权限,所以没有麻烦。

相关问题