Я использую последнюю версию Android Android SDK для аутентификации моих пользователей, и я столкнулся с этой проблемой.Андроид Facebook не обрабатывается
У меня есть активность с корнем, с пользовательской системой обработчика ActivityResult (в основном, фрагменты могут регистрировать и удалять ActivityResultHandlers для получения определенных результатов, таким образом обрабатывая результат запросов взаимодействия между фрагментами). Я расширил это с Facebook CallbackManager, как она описана в документации SDK:
В моей деятельности, я это:
@Override
void onCreate(Bundle bundle) {
[...]
setContentView(R.layout.activity);
FacebookSdk.sdkInitialize(getApplicationContext());
facebookCallbackManager = CallbackManager.Factory.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Map.Entry<Integer, ActivityResultHandler> entry : activityResultHandlers.entrySet()) {
if (entry.getKey() == requestCode)
entry.getValue().onActivityResultCustom(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
facebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}
И в моем фрагменте, я делаю это:
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
[...]
LoginManager.getInstance().registerCallback(
((MainActivity)getActivity()).getFacebookCallbackManager(),
new FacebookCallback<LoginResult>() { [...] }
);
}
Затем я вызываю LoginManager для начала аутентификации после нажатия кнопки (я использую пользовательскую графику, поэтому FacebookLoginButton, к сожалению, не может быть и речи).
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email","user_friends","public_profile"));
Теперь эта часть работает отлично, я могу видеть в отладчик, который называется метод facebookCallbackManager.onActivityResult()
. Однако, выходя изнутри, я вижу, что LoginManager зарегистрирован для определенного кода ответа (скажем, 64206), тогда как SDK возвращается с совершенно другим кодом запроса (129742), и, таким образом, обратный вызов LoginManager не обрабатывается.
Что я здесь делаю неправильно?
Не помогает. Обратный вызов все еще не обрабатывается вообще. – fonix232