Facebook Graph Api作用域被codenameone覆盖

Facebook Graph Api作用域被codenameone覆盖,codenameone,Codenameone,我试图使用FacebookConnect在用户的facebook墙上发布,但是方法createOauth2()通过其自身的权限覆盖了作用域 编辑 在android设备上,永远不会调用askPublishPermissions的Logincall back。 此外,当登录应用程序时,我会要求获得好友列表和电子邮件的权限,而我从未要求过。在FacebookConnect的源代码中,createOuth()方法正在范围中添加它们,但我不需要这些权限 解决方案: 这些是我为有同样问题的人所遵循的步骤。

我试图使用FacebookConnect在用户的facebook墙上发布,但是方法createOauth2()通过其自身的权限覆盖了作用域

编辑

在android设备上,永远不会调用
askPublishPermissions
的Logincall back。 此外,当登录应用程序时,我会要求获得好友列表和电子邮件的权限,而我从未要求过。在FacebookConnect的源代码中,
createOuth()
方法正在范围中添加它们,但我不需要这些权限

解决方案:

这些是我为有同样问题的人所遵循的步骤。 首先,我发现模拟器在请求许可时有问题。因此,我创建了自己的Outh登录,请求许可

对于android构建

  • 添加带有所需权限值的构建提示
    android.facebook\u permissions
    键。这是必须的一步。此处仅包含读取权限,而不包括
    发布\u操作
    权限或其他写入权限。如果您不需要除写入权限以外的任何权限,请添加facebook的默认权限
    public\u profile
  • 使用
    FacebookConenct.askPublishPermissions
    作为
    publish\u操作
    权限
  • 如果您先使用
    doLogin()
    ,然后出于某种原因
    askPublishPermission
    在我的情况下什么也没做。因此,我使用了
    askPublishPermission
    ,而没有调用
    doLogin()
    ,它会自动调用登录页面

  • 你是如何申请权限的

    你注意到你需要打电话写信了吗

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


    您是否按照说明设置了构建提示
    android.facebook\u权限?

    您是如何请求权限的

    你注意到你需要打电话写信了吗

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


    您是否按照说明设置了构建提示
    android.facebook\u权限

    我在回答中添加了一些细节。android.facebook\u权限和其他一些东西解决了我将在问题中更新的问题。但我仍然认为emulator存在问题,因为登录只会覆盖我的范围。请检查facebookConnect.createOuth()方法。模拟器使用与设备(本机登录)完全不同的系统(web登录)。我在答案中添加了一些详细信息。android.facebook\u权限和其他一些东西解决了我将在问题中更新的问题。但我仍然认为emulator存在问题,因为登录只会覆盖我的范围。请检查facebookConnect.createOuth()方法。模拟器使用与设备(本机登录)完全不同的系统(web登录)
    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();
                        }