首页 > 解决方案 > 带有 Google Play 服务登录的 Libgdx

问题描述

所以我不太确定如何使用 libgdx 处理 Google Play 服务登录,我的意思是我想在应用程序开始时要求用户登录。AndroidLauncher所以我的第一次尝试是在这样的onCreate方法中实现登录

protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        startSignInIntent();
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new MainGame(this), config);
    }

起初它看起来工作正常,第一次打开应用程序它要求我登录,然后在下一个应用程序打开时没有。但是这里的问题是,initialize无论是否startSignInIntent成功都会调用该方法,并且我想让它initialize仅在登录成功时调用,如果失败则可能关闭应用程序,并让用户再次打开我的应用程序再试一次。我试图调用initialize in OnActivityResult, in result.isSuccess(),但它不起作用,我想它必须被调用onCreate

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == RC_SIGN_IN) {

            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if(result.isSuccess()) {

                userAccount = result.getSignInAccount();
                Log.i("GoogleAccountTest", "Login Successful");


            } else {

                String message = result.getStatus().getStatusMessage();
                if(message == null || message.isEmpty()) {

                    message = "Something went wrong";

                }

                new AlertDialog.Builder(this).setMessage(message).setNeutralButton("Ok", null).show();

            }

        }

    }

然后我尝试用一​​个按钮制作我自己的登录屏幕以使用谷歌登录,我创建了一个接口,实现了它AndroidLauncher并通过我的初始化方法将它传递给然后调用.startSignInIntent(),但问题是我仍然没有赶上电话的天气成功与否在这里。

在这种情况下,我应该如何实现 Google Play Services Login?

标签: javalibgdxgoogle-play-services

解决方案


好的,几天后如果有人想知道我是如何处理它的,这就是我的解决方案:

我创建了带有登录按钮的附加屏幕,我StartSignInIntent在按下按钮时调用,然后在主要活动中我创建了一个标志, onActivityResultStartSignInIntent结果成功时我将其设置为 true。然后在渲染方法中带有登录按钮的屏幕中,我检查该标志,当它变为真时,我将屏幕更改为主菜单


推荐阅读