安卓Facebook SDK登录错误 1118578

7

一切都很正常,直到我想检查用户在没有网络连接的情况下点击“使用Facebook登录”按钮会发生什么。

一个弹框出现,上面写着:

登录失败。请联系此应用程序的制作者,并要求向Facebook报告问题#1118578。

在logcat中,我看到了:

D/Facebook-authorize(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);
}

编辑:

回答我的问题,从<activity>的清单中删除android:launchMode="singleInstance"解决了#1118578问题。

然而,对于Twitter OAuth登录,我确实需要android:launchMode="singleInstance",因为浏览器通过新的Intent将数据传回活动。如果我在清单中不提供android:launchMode="singleInstance",则会启动一个新的活动,它无法接收OAuth验证程序。

有没有办法绕过这个问题,在同一个活动中使用Facebook和Twitter登录? 我想到的唯一解决方案是使用带有singleInstance的Twitter4j虚拟活动。


我在没有设置launchMode(默认为标准)的情况下看到了1118578错误,所以可能不仅仅是这个问题。 - blahdiblah
1个回答

2

我克服这个问题的方法是通过更改Twitter中的回调,从“twitter://callback”更改为“http://localhost/callback”,并从清单中删除android:launchMode =“singleInstance”和Twitter intent-filter。

我仍然可以在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;
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接