代码之家  ›  专栏  ›  技术社区  ›  Levon Petrosyan

按用户链接打开用户facebook页面时出现问题

  •  3
  • Levon Petrosyan  · 技术社区  · 6 年前

    我得到了 this 试图打开用户的facebook页面时出现错误消息。奇怪的是,如果我与该用户有共同的朋友,页面加载没有问题,但我认为这不是默认行为,否则我无法理解 user_link 许可。

    Facebook已经批准 用户链接 我通过了应用程序审查。

    从开发人员帐户我更改了应用程序调用的API版本 v3.1 .

    我得到的方式 用户链接

    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 回复  |  直到 6 年前
        1
  •  3
  •   Levon Petrosyan    5 年前

    this 我们可以找到下面的一段文字

    对于大多数应用程序,链接只会重定向到个人的Facebook 个人扩展网络中已登录人员的配置文件。

    所以,我想没有办法百分之百地确定用户页面将被正确加载。

        2
  •  1
  •   andyrandy    6 年前

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

    …不推荐使用属于公共配置文件的以下字段。。。

    正如您可以在变更日志中看到的,“link”和“gender”字段已弃用。

    编辑:但是他们引入了新的权限 user_link user_gender 这样用户就可以显式地请求那些特定的字段。(感谢CBroe指出这一点)