通过user_link打开用户Facebook页面时出现问题

时间:2018-08-02 17:13:59

标签: android facebook facebook-graph-api

尝试打开用户的Facebook页面时收到this错误消息。奇怪的是,如果我与该用户有共同朋友,则该页面加载不会有问题,但我没有认为这是默认行为,否则我无法理解user_link权限的含义。

Facebook已批准user_link的权限,并且我通过了应用审核。

从开发者帐户中,我将应用程序调用的API版本更改为v3.1

我获得user_link

的方式
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("user_gender", "user_link"));
        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                       makeGraphRequest(loginResult.getAccessToken());
                    }

                    @Override
                    public void onCancel() {
                    }

                    @Override
                    public void onError(FacebookException error) {

                    }
                });


 public void makeGraphRequest(AccessToken token) {
        GraphRequest request = GraphRequest.newMeRequest(
                token, (object, response) -> {
                    try {
                        userStorage.setUserProfileUrl(object.getString(AppConstants.LINK));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "name,gender,link,picture.width(700).height(700)");
        request.setParameters(parameters);
        request.executeAsync();
    }

并使用this答案打开页面。

  Intent intent;
                try {
                    context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://facewebmodal/f?href=" + currentUser.getLink()));
                    context.startActivity(intent);
                } catch (Exception e) {
                    intent = new Intent(context, FacebookWebViewActivity.class);
                    intent.putExtra(AppConstants.USER_LINK, currentUser.getLink());
                    context.startActivity(intent);
                }

build.gradle

implementation 'com.facebook.android:facebook-login:4.33.0'

如果有人可以提出任何解决方案,我将非常感激。在Facebook新API版本发布之前,我也遇到了这个问题。

2 个答案:

答案 0 :(得分:3)

this帖子中,我们可以找到以下几段文字

  

对于大多数应用程序,链接只会重定向到个人的Facebook   个人扩展网络中已登录用户的个人资料。

因此,我想没有办法100%确定用户页面将正确加载。

答案 1 :(得分:1)

https://developers.facebook.com/docs/graph-api/changelog/version3.0#login

  

...以下属于public_profile的字段已弃用...

正如您可以在更改日志中看到的那样,不推荐使用“链接”和“性别”字段。

修改:但他们引入了新权限user_linkuser_gender,以便用户可以明确询问这些特定字段。 (感谢CBroe指出这一点)