Ошибка входа в Android Facebook sdk 1118578
все работало нормально, пока я не захотел проверить, что произойдет, если пользователь нажимает кнопку Войти с Facebook без подключения к интернету.
появился тост, говорящий:
ошибка входа. Пожалуйста, свяжитесь с создателем этого приложения и попросите их сообщить о выпуске #1118578 в Facebook.
в logcat у меня есть:
D / Facebook-авторизация (2824): вход отменен пользователь.
Я попытался избавиться от этого тоста и отобразить мое собственное сообщение об ошибке в onCancel()
метод-но я не могу найти способ отключить этот тост.
Когда я снова включил WiFi, единый вход больше не работал!
что может быть причиной этого?
private void fbLogin() {
facebook.authorize(this, new String[] { "email" }, new DialogListener() {
@Override
public void onComplete(Bundle values) {
app.save("fb_token", facebook.getAccessToken());
app.save("fb_expire", facebook.getAccessExpires());
mAsyncRunner.request("me", new meRequestListener());
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
EDIT:
чтобы ответить на мой собственный вопрос, удаление android:launchMode="singleInstance"
из манифеста в <activity>
решена проблема #1118578.
тем не менее, мне нужно android:launchMode="singleInstance"
для twitter OAuth войти, как браузер передает данные обратно к деятельности с помощью нового намерения. Если я не предоставлю android:launchMode="singleInstance"
в манифесте запускается новое действие, и оно не получает верификатор OAuth.
есть ли способ обойти это, чтобы использовать Facebook и Twitter войти в той же деятельности?
Единственное решение, которое я думаю, - использовать фиктивную активность для Twitter4j с singleInstance
.
1 ответов
мой способ преодолеть это был путем изменения обратного вызова в twitter, от "twitter: / / обратный вызов" до "http://localhost/callback" и удалите android: launchMode= "singleInstance" и фильтр намерений twitter из манифеста.
Я все еще могу получить ответ в WebView (а не на onResume (), как раньше):
yourwebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// your_callback == http://localhost/callback
if(url == null || !url.startsWith(your_callback))
return;
Uri uri = Uri.parse(url);
String ov = uri.getQueryParameter("oauth_verifier");
AccessToken at = null;
...