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 版本。

  1. 添加构建提示 android.facebook_permissions 键值您想要的权限。这是必须的一步。此处仅包括读取权限,而不包括 publish_action 权限或其他写入权限。如果除了写权限不需要其他权限,请添加 public_profile 这是 facebook 的默认权限。
  2. 使用 FacebookConenct.askPublishPermissions 获得 publish_actions 权限。
  3. 如果您先使用 doLogin() 然后出于某种原因 askPublishPermission 在我的情况下什么也没做。所以我使用 askPublishPermission 没有调用 doLogin() 自动调用登录页面。

您是如何申请权限的?

你有没有注意到你需要打电话给askPublishPermissions来写?

与 Web 应用程序不同,本机应用程序需要请求写入权限。

您是否按照说明 here 设置了构建提示 android.facebook_permissions