Facebook SDK 4.0 LoginButton – setReadPermissions не работает?

Я внедрил LoginButton из Facebook 4.0 SDK. Вход и выход из системы работают нормально.

Теперь я хочу установить разрешение «user_friends» с помощью LoginButton.setReadPermissions(Arrays.asList("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. Вы протестировали логин и получили действительный токен доступа
  3. Вы изменили свой код, чтобы попросить user_friends с LoginButton
  4. Теперь вы не можете получать дополнительные разрешения с помощью LoginButton

Я определил это как ошибку в SDK, и мы исправим его в предстоящей версии.

Текущая работа во время разработки заключается в том, чтобы отменить авторизацию вашего приложения (из ваших настроек Facebook) при внесении изменений в LoginButton. Таким образом, это приведет к недействительности вашего токена доступа, и при следующем входе в систему вы должны увидеть user_friends в диалоговом окне с разрешениями. Это должно быть проблемой только в том случае, если вы вносите изменения в массив разрешений между обновлениями приложений.