0

Я нажимаю пользовательскую кнопку, чтобы дать пользователям разрешение на публикацию моего приложения для Android (Facebook SDK 4.18.0). Оно работает. Он переходит к фрагменту facebook, в котором предлагается пользователю разрешить публиковать разрешения для приложения, а затем возвращается к активности, в которой была нажата кнопка. Дело в том, что я запустил отладчик, и он никогда не проходит через функции обратного вызова, которые мне нужно делать, что мне нужно делать после того, как пользователь принял.Android App: Facebook LoginManager дает мне разрешение «publish_actions», но приложение никогда не проходит обратный вызов callbackManager (Facebook SDK 4.18.0)?

Слушатель:

permissionButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      permissionButton.startAnimation(rotation); 

      JSONObject userCredentials = new JSONObject(); 

      //ask for facebook publishing permissions 

      if(facebook_connected) { 
       CallbackManager callbackManager = CallbackManager.Factory.create(); 

       facebookLoginWithPublishPermissions(callbackManager); 
      } 




     } 
    }); 

И мои пользовательские функции «facebookLoginWithPublishPermissions», который намеревается получить токен публиковать разрешения (нужно ли мне новый или старый один работает теперь, когда я был предоставлен Разрешения "publish_actions" для этого пользователя, потому что я уже зарегистрирован и имею access_token, но только с базовыми разрешениями, используя firebase ui auth module for android)? Если я перейду на страницу facebook пользователя, я увижу, что соответствующие разрешения установлены так, что все в порядке. Код:

private void facebookLoginWithPublishPermissions(CallbackManager callbackManager) { 
     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       Log.d("FACEBOOK_LOGIN_RESULT", "facebook login success"); 
       Log.d("LOGIN_RESULT", loginResult.getAccessToken().getToken()); 
      } 

      @Override 
      public void onCancel() { 
       Log.d("FACEBOOK_LOGIN_RESULT", "facebook login canceled"); 

      } 

      @Override 
      public void onError(FacebookException exception) { 
       Log.e("FACEBOOK_LOGIN_RESULT", "facebook login error"); 
       exception.printStackTrace(); 
      } 
     }); 

     LoginManager.getInstance().logInWithPublishPermissions((Activity) mContext, Arrays.asList("publish_actions")); 
    } 

1-Как я могу получить новый маркер (в случае, если необходимо обновить маркер, если вы попросите дополнительные разрешения)? 2-Как я могу заставить функцию обратного вызова выполнять действия после предоставления разрешения publish_actions?

Большое вам спасибо за помощь!

EDIT: В будущем, ссылаясь на политику Facebook API/Permission, Facebook предоставляет РАЗЛИЧНЫЙ токен из того, который вы впервые предоставили при входе в систему с основными разрешениями. Они должны просмотреть ваше приложение, чтобы убедиться, что вы используете разрешения ТОЛЬКО, когда вам это нужно, а также проверить, не спрашиваете ли вы эти разрешения «на всякий случай», чтобы избежать ненужных запросов на их сервер. Также они хотят, чтобы вы позволили пользователю узнать, что происходит, они должны принять разрешение на публикацию, поэтому вам нужно сделать 2 запроса, сначала разрешения на чтение при первом подключении к facebook и второй запрос на запись (publish_actions). Вы НЕ МОЖЕТЕ просить разрешения на публикацию, если вы уже не просили разрешения на чтение в первую очередь.

ответ

1

Вы добавляете в свой код следующий метод?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
    Log.d("TAG: 5. ", "I´m at onActivity result"); 
} 
+0

Спасибо, мой друг, который отлично работал, теперь он сначала переходит к onActivityResult, а затем к обратному сообщению facebook. Только для записи после этого второго запроса на дополнительные разрешения вы получаете другой токен от первого. В документах разработчика facebook говорится, что вы должны запрашивать это разрешение только тогда, когда вам нужно его использовать, а не «на всякий случай». Я прошу об этом, когда пользователь нажимает кнопку сообщения. Если я просмотрю свое приложение с ними, у меня будет принятое приложение, как я его использую ?. Благодаря!!! – Juan

+0

еще одна вещь, следует ли добавить код, чтобы отфильтровать эту активность. Результат, где его следует поместить? Причина У меня в настоящее время нет одного набора для этого конкретного действия ....... – Juan

+1

Вы должны знать с самого начала, что вам нужно от пользователя. то есть электронная почта, день рождения, список друзей и т. д. Вы можете добавить это отдельно или со следующим форматом: loginButton.setReadPermissions (Arrays.asList ( «public_profile», «email», «user_birthday», «user_friends»)); Я не очень хорошо разбираюсь в фильтрации, но что-то, что вы хотели бы фильтровать в результате onActivity, - это если вы используете логин fb и g +, как показано в этом сообщении [Code for fb/g +] (http: // stackoverflow.com/questions/32778341/onactivityresult-code-for-both-facebook-and-google-login-in-android) – eduardo92

Смежные вопросы