Я выполнил вход в Facebook для Android, чтобы интегрировать FB в свое приложение для Android. Сделано. Я вижу экран разрешений, на котором пользователь должен согласиться на использование своего идентификатора электронной почты. Проблема в том, что ни один из обратных вызовов FacebookCallback не вызывается.
Я выполнил ту же процедуру, что и в приведенном выше руководстве.
- Я инициировал FB SDK.
- Затем создал экземпляр CallBackManager.
- Имейте setFragment (это).
- Зарегистрировали обратный звонок на Facebook таким образом
Код фрагмента:
public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(this.getActivity().getApplicationContext());
super.onCreate(savedInstanceState);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
mButtonFbLogin.setReadPermissions(Arrays.asList("email"));
mButtonFbLogin.setFragment(this);
mCallbackManager = CallbackManager.Factory.create();
mButtonFbLogin.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d(TAG, "FB Login Successful. Token : " +loginResult.getAccessToken());
}
@Override
public void onCancel() {
Log.d(TAG, "FB Login cancelled..");
}
@Override
public void onError(FacebookException e) {
Log.d(TAG, "FB Login failed. Exception : " +e.toString());
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult of Fragment..");
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
}
- Наконец я позвонил
mCallbackManager.onActivityResult(requestCode, resultCode, data);
. Моя активность onActivityResult () вызывается первой, откуда я вызвал onActivityResult () фрагмента.
Из журналов я вижу, что вызывается onActivityResult
моего фрагмента, а также onActivityResult()
callbackManger. Но ни один из обратных вызовов Facebook Callback не вызывается.
Есть подсказка?
AccessToken.getCurrentAccessToken()
- это способ, который можно использовать в onCreate()
. Но с этим я не могу точно знать, когда токен создается впервые.
И AccessTokenTracker
на самом деле отслеживает изменения в токенах, но не знает, когда сеанс входа в систему успешен, неуспешен или отменен.
ОБНОВЛЕНИЕ:
Я просто пробовал использовать AccessTokenTracker, но onCurrentAccessTokenChanged () не был вызван после того, как я нажал OK на экране разрешений, и управление вернулось к моему фрагменту. Это код:
@Override public void onCreate (Bundle savedInstanceState) {FacebookSdk.sdkInitialize (this.getActivity (). GetApplicationContext ());
mAccessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
Log.d(TAG, "onCurrentAccessTokenChanged : old : " +oldAccessToken);
Log.d(TAG, "onCurrentAccessTokenChanged : new : " +currentAccessToken);
}
};
mAccessTokenTracker.startTracking();
super.onCreate(savedInstanceState);
}