【发布时间】:2016-04-04 16:30:59
【问题描述】:
我正在尝试使用 FacebookConnect 在用户的 Facebook 墙上发帖,但方法 createOauth2() 方法通过其自己的权限覆盖范围。
编辑
if (fb.isNativeLoginSupported()) { Dialog.show("native", "Yes", "Ok", null); if (!fb.hasPublishPermissions()) { Dialog.show("permission", " no publish permission", "ok", null); fb.askPublishPermissions(new LoginCallback() { @Override public void loginSuccessful() { Dialog.show("permission", "accessed: " + fb.hasPublishPermissions(), "Ok", null); System.out.println("permission: " + fb.hasPublishPermissions()); token = fb.getAccessToken().getToken(); PhotoShare share = new PhotoShare(); share.sendPhoto(token, id); } @Override public void loginFailed(String errorMessage) { System.out.println("failed permission: " + errorMessage); Dialog.show("permission error", errorMessage, "Ok", null); } }); } else { Dialog.show("permission", "publish permission", "ok", null); PhotoShare share = new PhotoShare(); share.sendPhoto(token, id); } } else { Dialog.show("permission", "No native support", "Ok", null); fb.setScope("publish_actions"); fb.setCallback(new LoginCallback() { @Override public void loginSuccessful() { token = fb.getAccessToken().getToken(); PhotoShare share = new PhotoShare (); share.sendPhoto(token, id); } }); fb.doLogin(); }
askPublishPermissions 的 Logincall back 永远不会在 android 设备上被调用。
此外,当登录应用程序时,我从未询问过好友列表和电子邮件的权限。在 FacebookConnect 的源代码中,createOuth() 方法将它们添加到范围内,但我不需要这些权限。
解决方案:
这些是我为遇到同样问题的人所遵循的步骤。 首先,我发现模拟器要求许可的问题。所以我创建了自己的 Outh 登录,请求许可。
对于 android 版本。
- 添加构建提示
android.facebook_permissions键值你想要的权限。这是必须的一步。此处仅包括读取权限,而不包括publish_action权限或其他写入权限。如果您不需要除写权限以外的其他权限,请添加public_profile,这是 facebook 的默认权限。 - 使用
FacebookConenct.askPublishPermissions获得publish_actions权限。 - 如果您首先使用
doLogin(),那么出于某种原因askPublishPermission在我的情况下什么也没做。所以我使用askPublishPermission没有调用doLogin()自动调用登录页面。
【问题讨论】:
标签: codenameone