Android“使用 Facebook 登录”回调没有被触发

迭戈·佩雷斯

我正在将“使用 Facebook 登录”集成到我的 Android 应用程序中,但我遇到了一个奇怪的问题,这是我第一次(也是第一次)启动我的应用程序(就在安装了新副本之后)Facebook 回调在我点击按钮后没有被调用(但正常登录)。如果我正常登录(或使用 Facebook),然后第二次注销,然后回调会正常触发。

我需要回调来执行一些用户会话操作,所以我对此很生气,很多天都找不到解决方案,所以我希望任何人都可以帮助我。我的 facebookCallBackManager() 函数在 onCreate 中调用。

在我下面的示例中,我需要 getFacebookUserData() 方法才能被触发,但设置断点和调试甚至 onSucces 都不会被触发。

提前致谢!

下面我将我的回调代码粘贴到我的 ActivityLogin 类中:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

private void facebookCallBackManager() {

    callbackManager = CallbackManager.Factory.create();

    LoginButton btnFacebookLogin = (LoginButton) findViewById(R.id.btnFacebookLogin);
    btnFacebookLogin.setReadPermissions("public_profile", "email", "user_friends");
    btnFacebookLogin.registerCallback(callbackManager,
        new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                GraphRequest.newMeRequest(
                    loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject json, GraphResponse response) {
                            if (response.getError() != null) {
                                // handle error
                            } else {
                                getFacebookUserData(json);
                            }
                        }
                    }
                ).executeAsync();
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException exception) {

                if (!GeneralUtils.isOnline(oContext)){
                    GeneralUtils.showNoInternet(strTheme, oContext, ActivityLogin.this);
                }else{
                    String strMessage=exception.getMessage();
                    GeneralUtils.showToast(strMessage, Toast.LENGTH_LONG, strTheme, ActivityLogin.this);
                }
            }
        });
}

编辑1:

我忘了说我使用的是 SDK 4.23.0,所以不再需要 SDK 初始化。

编辑2:

更多可能有用的信息。

我的 ActivityMain 是主要的和默认的,如果用户未登录则启动时重定向到登录是通过下一行完成的:

private void doLogin(){

    Intent i = new Intent(getApplicationContext(), ActivityLogin.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

    this.startActivity(i);
}
迭戈·佩雷斯

好吧,我会回答我自己的问题,以防万一它可以帮助任何可能面临相同(或类似)问题的人,但首先我必须说 @Michal_196 已经让我朝着正确的方向发展,所以我首先要感谢他。

第一次启动应用程序时未触发回调的问题与我调用 ActivityLogin 活动的方式有关,具体来说: setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

我的流程是调用 ActivityMain 并检查已登录的用户,如果不是,我将重定向到 ActivityLogin 并避免在后退按钮后登录时未登录的用户能够回击并访问我拥有的应用程序添加了“FLAG_ACTIVITY_NO_HISTORY”以从历史记录中清除主要内容,但我不知道为什么这是回调没有被解雇的罪魁祸首。

删除该行后,不仅回调工作正常,而且如果用户启动应用程序并被重定向到从主登录并点击返回按钮而不登录应用程序只是按预期退出,奇怪但有效!

编辑1:

现在思考得更好,我明白发生了什么,FLAG_ACTIVITY_NO_HISTORY 而不是从堆栈中清除主要活动表明登录活动不应该放在堆栈上,因此在调用 facebook 后没有触发回调,现在我很清楚,我已经解决了我的问题。再次感谢@Michal_196。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Facebook登录时不会触发onLoginFinished回调

来自分类Dev

没有Facebook App的Android Facebook SDK 4.0登录

来自分类Dev

Facebook社交登录回调网址在地址栏中没有参数但在本地工作

来自分类Dev

使用Facebook的Android登录应用

来自分类Dev

Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

来自分类Dev

Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

来自分类Dev

使用LoginManager登录Android Facebook SDK 4.0

来自分类Dev

没有Facebook应用的Android Facebook SDK 4登录无法正常工作

来自分类Dev

Facebook android片段登录

来自分类Dev

Android django Facebook登录

来自分类Dev

Android Facebook SDK登录

来自分类Dev

android facebook已经登录

来自分类Dev

Facebook已登录android

来自分类Dev

使用$ cordovaOauth与Facebook登录

来自分类Dev

使用FBSessionLoginBehaviorForcingWebView登录Facebook

来自分类Dev

使用oauth与Facebook登录

来自分类Dev

使用tabBarController登录Facebook

来自分类Dev

在Android上实现Facebook登录-登录后没有Logcat结果

来自分类Dev

使用 Facebook-PHP-SDK 登录 Facebook

来自分类Dev

Android Facebook登录未调用回调函数

来自分类Dev

我正在尝试使用Facebook登录,但登录成功,但没有返回到应用程序

来自分类Dev

在不使用带有本机对话框的Android上使用Facebook登录按钮的情况下登录Facebook

来自分类Dev

在不使用带有本机对话框的Android上使用Facebook登录按钮的情况下登录Facebook

来自分类Dev

facebook android sdk sharedialog回调总是成功的

来自分类Dev

Facebook SDK 4 Android不能共享回调

来自分类Dev

Android Facebook LoginButton回调跳至取消

来自分类Dev

Facebook Android SDK 3.5.2回调无法解析为变量

来自分类Dev

使用Facebook登录有权限问题?

来自分类Dev

让Android应用忘记Facebook登录

Related 相关文章

  1. 1

    使用Facebook登录时不会触发onLoginFinished回调

  2. 2

    没有Facebook App的Android Facebook SDK 4.0登录

  3. 3

    Facebook社交登录回调网址在地址栏中没有参数但在本地工作

  4. 4

    使用Facebook的Android登录应用

  5. 5

    Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

  6. 6

    Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

  7. 7

    使用LoginManager登录Android Facebook SDK 4.0

  8. 8

    没有Facebook应用的Android Facebook SDK 4登录无法正常工作

  9. 9

    Facebook android片段登录

  10. 10

    Android django Facebook登录

  11. 11

    Android Facebook SDK登录

  12. 12

    android facebook已经登录

  13. 13

    Facebook已登录android

  14. 14

    使用$ cordovaOauth与Facebook登录

  15. 15

    使用FBSessionLoginBehaviorForcingWebView登录Facebook

  16. 16

    使用oauth与Facebook登录

  17. 17

    使用tabBarController登录Facebook

  18. 18

    在Android上实现Facebook登录-登录后没有Logcat结果

  19. 19

    使用 Facebook-PHP-SDK 登录 Facebook

  20. 20

    Android Facebook登录未调用回调函数

  21. 21

    我正在尝试使用Facebook登录,但登录成功,但没有返回到应用程序

  22. 22

    在不使用带有本机对话框的Android上使用Facebook登录按钮的情况下登录Facebook

  23. 23

    在不使用带有本机对话框的Android上使用Facebook登录按钮的情况下登录Facebook

  24. 24

    facebook android sdk sharedialog回调总是成功的

  25. 25

    Facebook SDK 4 Android不能共享回调

  26. 26

    Android Facebook LoginButton回调跳至取消

  27. 27

    Facebook Android SDK 3.5.2回调无法解析为变量

  28. 28

    使用Facebook登录有权限问题?

  29. 29

    让Android应用忘记Facebook登录

热门标签

归档