一切都很好,直到我想看看如果用户点击登录与Facebook按钮,没有可用的互联网连接会发生什么。
祝酒词出现时说:
登录失败。请与此应用程序的制造者联系,并要求他们向Facebook报告第1118578期。
在“逻辑猫”中我有:
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);
}编辑:
为了回答我自己的问题,从android:launchMode="singleInstance"清单中删除<activity>解决了#1118578问题。
但是,我确实需要android:launchMode="singleInstance"作为twitter OAuth登录,因为浏览器通过新的意图将数据传递回活动。如果我没有在清单中提供android:launchMode="singleInstance",则启动一个新的活动,并且它不会接收OAuth验证器。
有没有办法避免这种情况,在同一个活动中使用Facebook和Twitter登录?我想出的唯一解决方案就是用singleInstance为Twitter4j使用虚拟活动。
发布于 2012-10-12 12:11:31
我克服这一问题的方法是将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;
...https://stackoverflow.com/questions/12759261
复制相似问题