【问题标题】:Facebook Graph Api scope is overwritten codenameoneFacebook Graph Api 范围被覆盖代号one
【发布时间】: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 版本。

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

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    您是如何请求权限的?

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

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

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

    【讨论】:

    • 我在回答中添加了一些细节。
    • android.facebook_permissions 和其他一些东西解决了我将在我的问题中更新的问题。但我仍然认为模拟器存在问题,因为登录只会覆盖我的范围。请检查 facebookConnect.createOuth() 方法。
    • 模拟器使用与设备完全不同的系统(网络登录)(本机登录)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多