Дополнительно
Facebook CallbackManager логин FacebookCallback не называют?
- Я пытался войти с LoginButton, но обратные вызовы логин не называют.(LoginButton в фрагмента) .
- FacebookSdk.sdkInitialize вызывается в методе onCreate приложения
- Нет обратных вызовов называются после завершения входа в систему. Вот код:
Деятельность:
public class FrameActivity extends BaseActivity {
public static CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
// FacebookSdk.sdkInitialize is called in the Application onCreate
callbackManager = CallbackManager.Factory.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Фрагмент:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_login, container, false);
LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.setReadPermissions("public_profile");
loginButton.setReadPermissions("email");
loginButton.setReadPermissions("user_birthday");
// If using in a fragment
loginButton.setFragment(this);
// Other app specific specialization
// Callback registration
loginButton.registerCallback(FrameActivity.callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
return view;
}
28
7
Попробуйте это:
Инит
FacebookSdk.sdkInitialize () в фрагменте'onCreateView с
()`.Следующая строка инициализации callbackManager = CallbackManager.Фабрика.создать()`;
Выполнить по метод onActivityResult()` в классе фрагмента.
Добавить callbackManager свой
.метод onActivityResult(requestCode, resultCode, данных);
в метод onActivityResult фрагмент()
.Убедитесь, что удалить
FacebookInit()
и `callbackManager от активности.Эта линия уже в вопросе. Но просто хотел написать это для других разработчиков, которые за взгляд.
Если вы используете кнопку Вход FB в фрагмент убедитесь, что вы добавить это в свой метод onCreateView. Это обеспечивает перезвонить, чтобы перейти к фрагменту, а не к вашей деятельности.
изменить метод, как показано ниже:
Добавить обратный вызов для вашей деятельности или фрагмент'ы onCreate() метод:
Если войти удастся, то
LoginResult параметр
новыймаркер accessToken
, и совсем недавно удовлетворил или отклонил разрешения.Вы Don'т нужна registerCallback для входа в систему, чтобы добиться успеха, вы можете выбрать, чтобы следовать текущий маркер доступа меняется с AccessTokenTracker класса, описанные ниже.
Затем в метод onActivityResult()
ждем логина результатов
callbackManagerсоздан в методе onCreate()
:Каждый вид деятельности и фрагмент, который вы интегрируете с логином FacebookSDK или доля должны вперед `метод onActivityResult в callbackManager.
Примите также во внимание, что если у вас два менеджера обратного вызова для двух различных операций (например, логин и поделиться) первое, что получает метод onActivityResult может получить второе'с обратного вызова, и наоборот. Такое поведение также может сделать ваш обратного вызова не вызывается.
Этот работал для меня
если в Фрагмент это loginButton важно
.setFragment(этого);
Я потратил ~3 часа, чтобы выяснить, у меня были непонимания с использованием API facebook.
Оригинал вызова не'т положить onsuccess процедуры()
код в отдельную функцию
callAPI(), так это не вызов API, хотя уже при успешном логине. Причина в том, что сеанса в поле и перелогиниться не пойдет внутри onsuccess процедуры()
!Временное решение я нашел, это проверить маркер доступа и отдельный призыв к callAPI()
в оба
, onsuccess процедуры()и
метод onActivityResult()`.