一切正常,直到我想检查如果用户在没有可用互联网连接的情况下单击“使用 Facebook 登录”按钮会发生什么。
出现了一个祝酒词:
登录失败。请联系此应用程序的制造商,并要求他们向 Facebook 报告问题 #1118578。
在 logcat 我有:
D/Facebook-authorize(2824):用户取消登录。
我试图摆脱这个 toast 并在onCancel()
方法中显示我自己的错误消息 - 但我找不到禁用那个 toast 的方法。当我再次启用 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);
}
编辑:
要回答我自己的问题,请从已解决的 #1118578 问题android:launchMode="singleInstance"
中的清单中删除。<activity>
但是,我确实需要android:launchMode="singleInstance"
twitter OAuth 登录,因为浏览器通过新 Intent 将数据传递回活动。如果我没有android:launchMode="singleInstance"
在清单中提供,则会启动一个新活动并且它不会收到 OAuth 验证程序。
有没有办法解决这个问题,在同一个活动中使用 Facebook 和 Twitter 登录?
我想到的唯一解决方案是使用 Twitter4j 的虚拟活动和singleInstance
.