是否可以使用具有读取和发布权限的Facebook LoginManager登录?

时间:2017-09-05 15:10:32

标签: android facebook facebook-graph-api facebook-android-sdk

我正在创建一个Android应用,您应该能够使用具有读取和发布权限的Facebook登录。我用LoginManager实现了它,它运行得很好。这是我登录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,因为它可以存储所需的权限,然后一次登录。这是不可能使用LoginManager?我查看了整个互联网,this是唯一一个说LoginManager使用read 发布登录的地方,但LoginButton可以同时执行这两项操作。

这一切都是真的吗?将登录从LoginManager更改为LoginButton并不是一项巨大的工作,但我只是想知道是否有任何方式使用LoginManager立即同时使用读取和发布权限登录,似乎很奇怪,这是不可能的。

1 个答案:

答案 0 :(得分:0)

我自己解决了。

我完全误解了facebook登录的工作原理,但在读完facebook api之后我终于修复了它。

如果您同时需要“读取”和“发布”权限,则需要在不同的时间段内请求它们。当我第一次登录应用程序时,我只使用loginManager请求读取权限(正如我之前所做的那样)。只有当用户将内容发布到Facebook时,我才会检查用户是否具有发布权限。如果没有,我启动一个新的loginManager并要求它。

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

相关问题