【问题标题】:android facebook authorization: onActivityResult not calledandroid facebook授权:未调用onActivityResult
【发布时间】:2012-06-08 08:04:52
【问题描述】:

我构建了一个与 facebook 连接的 android 应用程序,它有一个按钮。当我单击按钮时,该应用程序将调用 facebook.authorize 来请求许可。从请求权限屏幕返回后,它应该调用 onActivityResult 方法。但就我而言,它从不调用此方法。我发现了一些类似的问题,但所有解决方案都不能解决我的问题。这是用户单击按钮时的代码:

facebook.authorize(this, new String[] { "read_friendlists" }, 
                new DialogListener() {
                    public void onComplete(Bundle values) {
                        Log.v("complete", "complete");
                        hideNeedLoginView();
                    }

                    public void onCancel() {
                        Log.v("cancel", "cancel");
                        hideNeedLoginView();
                    }

                    public void onFacebookError(FacebookError e) {
                        // TODO Auto-generated method stub
                        Log.v("error", "error");
                    }

                    public void onError(DialogError e) {
                        // TODO Auto-generated method stub
                        Log.v("error", "error");
                    }
                });

和onActivityResult方法:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebook.authorizeCallback(requestCode, resultCode, data);
}

由于 onActivityResult 没有被调用,所有的 onComplete 或 onCancel 方法也没有被调用。 Intent.FLAG_ACTIVITY_NO_HISTORY 没有定义,所以这不是问题(这是在 facebook 页面上提到的)。如果我将 activityCode 设置为 Facebook.FORCE_DIALOG_AUTH,那么当我单击按钮时,应用程序没有响应。我在设备上安装了 facebook 应用程序。授权后怎么调用onActivityResult方法?请有人帮我解决这个问题,因为我在任何地方都找不到任何解决方案。

【问题讨论】:

  • 在 Facebook SDK 的 util.java 顶部有一个变量,称为 show_debug 或类似的东西。将此值设置为 true 并检查 LOGCAT 中的 tag::facebook。它通常会很好地提示问题可能是什么。
  • @Alborz:我按照你说的做了,不幸的是,Logcat 中没有显示任何内容(标签 facebook)。
  • @ania:不,我对这一切都很陌生,所以我不知道 Fragment 是什么。
  • @user1417127 你真的重新运行了同样的程序吗?如果身份验证成功与否,则必须如此。请记住,您需要在 LOGCAT 中输入一些内容才能更新,否则它不会显示任何内容。
  • 非常感谢! AndroidManifest 中的 android:noHistory="true" 给我带来了所有麻烦。

标签: android facebook authorize


【解决方案1】:

希望以下代码对您有所帮助。

private static final String[] PERMISSIONS = new String[]
    { "publish_stream", "read_stream", "offline_access" };

mFacebook = new Facebook(APP_ID); 
mFacebook.authorize(this, PERMISSIONS,new LoginDialogListener());


private final class LoginDialogListener implements
            com.facebook.android.Facebook.DialogListener
    {

        /**
         * Called when the dialog has completed successfully
         */
        public void onComplete(Bundle values)
        {
            // Process onComplete
            Log.d("FB Sample App", "LoginDialogListener.onComplete()");
            // Dispatch on its own thread
            mHandler.post(new Runnable()
            {
                public void run()
                {
                    mText.setText("Facebook login successful. Press Menu...");
                }
            });
        }

        public void onFacebookError(FacebookError error)
        {
            // Process error
            Log.d("FB Sample App", "LoginDialogListener.onFacebookError()");
        }

        public void onError(DialogError error)
        {
            // Process error message
            Log.d("FB Sample App", "LoginDialogListener.onError()");
        }

        public void onCancel()
        {
            // Process cancel message
            Log.d("FB Sample App", "LoginDialogListener.onCancel()");
        }
    }

【讨论】:

  • 怎么没有调用 onActivityResult ?他们在 API 上说,在这个方法上调用 authorizeCallback 非常重要,但无论发生什么,它甚至都没有被调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多