草庐IT

android - Facebook SDK 4.0 LoginButton - setReadPermissions 不工作?

coder 2023-12-27 原文

我从 Facebook 4.0 SDK 实现了 LoginButton。登录和注销工作正常。

现在我想用 LoginButton.setReadPermissions(Arrays.asList("user_friends")); 设置“user_friends”权限

但是好像,这行代码被忽略了? 当我使用 getAccessToken().getPermissions(); 成功登录后读取权限时,我只有 "basic_info" 权限。

如果我改用 LoginManager.getInstance().logInWithReadPermissions( HighscoreFragment.this, Arrays.asList("user_friends") );,我会获得正确的权限。但我想使用 LoginButton

那么实现LoginButton并在登录时设置所需权限的正确方法是什么?

这是我的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_highscore, container, false);

        mLoginButton = (LoginButton) view.findViewById(R.id.login_button);
        mLoginButton.setReadPermissions(Arrays.asList("user_friends"));
        mLoginButton.setFragment(this);    

        // Callback registration
        mLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                Log.i(TAG, "LOGIN SUCCESFUL");
                Log.i(TAG, loginResult.getAccessToken().getPermissions().toString());
                AccessToken accessToken = AccessToken.getCurrentAccessToken();
                if (accessToken != null) {
                    if(accessToken.getPermissions().contains("user_friends"))
                        fetchScoreboardEntries();
                }
            }

            @Override
            public void onCancel() {
                Log.i(TAG, "LOGIN CANCEL");
            }

            @Override
            public void onError(FacebookException exception) {
                Log.i(TAG, "LOGIN ERROR");
            }
        });

最佳答案

我认为你的问题是这样的:

  1. 您从一个简单的 LoginButton 开始(只需要 basic_info 权限)
  2. 您测试了登录并获得了有效的访问 token
  3. 您更改了代码以使用登录按钮请求 user_friends
  4. 现在您无法使用 LoginButton 获得额外的权限

我已将此确定为 SDK 中的错误,我们将在即将发布的版本中修复它。

在开发过程中,当前的解决方法是在更改 LoginButton 时取消对应用程序的授权(从 Facebook 设置)。这样一来,它会使您的访问 token 失效,下次登录时,您应该会在权限对话框中看到 user_friends。如果您在两次应用更新之间更改权限数组,这应该只是一个问题。

关于android - Facebook SDK 4.0 LoginButton - setReadPermissions 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768778/

有关android - Facebook SDK 4.0 LoginButton - setReadPermissions 不工作?的更多相关文章

随机推荐