Facebook Graph Api 范围被覆盖 codenameone
Facebook Graph Api scope is overwritten codenameone
我正在尝试 post 在使用 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 返回永远不会在 android 设备上被调用。
此外,当登录该应用程序时,会询问我从未询问过的好友列表和电子邮件的权限。在 FacebookConnect 的源代码中,createOuth()
方法将它们添加到范围内,但我不需要这些权限。
解法:
这些是我为遇到相同问题的任何人所遵循的步骤。
首先,我发现模拟器请求许可有问题。所以我创建了自己的 Outh 登录请求许可。
对于 android 版本。
- 添加构建提示
android.facebook_permissions
键值您想要的权限。这是必须的一步。此处仅包括读取权限,而不包括 publish_action
权限或其他写入权限。如果除了写权限不需要其他权限,请添加 public_profile
这是 facebook 的默认权限。
- 使用
FacebookConenct.askPublishPermissions
获得 publish_actions
权限。
- 如果您先使用
doLogin()
然后出于某种原因 askPublishPermission
在我的情况下什么也没做。所以我使用 askPublishPermission
没有调用 doLogin()
自动调用登录页面。
您是如何申请权限的?
你有没有注意到你需要打电话给askPublishPermissions来写?
与 Web 应用程序不同,本机应用程序需要请求写入权限。
您是否按照说明 here 设置了构建提示 android.facebook_permissions
?
我正在尝试 post 在使用 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 返回永远不会在 android 设备上被调用。
此外,当登录该应用程序时,会询问我从未询问过的好友列表和电子邮件的权限。在 FacebookConnect 的源代码中,createOuth()
方法将它们添加到范围内,但我不需要这些权限。
解法:
这些是我为遇到相同问题的任何人所遵循的步骤。 首先,我发现模拟器请求许可有问题。所以我创建了自己的 Outh 登录请求许可。
对于 android 版本。
- 添加构建提示
android.facebook_permissions
键值您想要的权限。这是必须的一步。此处仅包括读取权限,而不包括publish_action
权限或其他写入权限。如果除了写权限不需要其他权限,请添加public_profile
这是 facebook 的默认权限。 - 使用
FacebookConenct.askPublishPermissions
获得publish_actions
权限。 - 如果您先使用
doLogin()
然后出于某种原因askPublishPermission
在我的情况下什么也没做。所以我使用askPublishPermission
没有调用doLogin()
自动调用登录页面。
您是如何申请权限的?
你有没有注意到你需要打电话给askPublishPermissions来写?
与 Web 应用程序不同,本机应用程序需要请求写入权限。
您是否按照说明 here 设置了构建提示 android.facebook_permissions
?