谷歌登录无法使用android?

谷歌登录无法使用android?,android,google-signin,google-plus-signin,Android,Google Signin,Google Plus Signin,因此,我的项目遇到的一个问题是,通过谷歌登录无法持续工作。也就是说,它适用于我的朋友,而不是我的电脑,即使它适用于我昨天擦拭我的手机之前(手机被损坏)。我们的登录代码是谷歌登录的标准,问题是结果总是返回false。守则: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome_sc

因此,我的项目遇到的一个问题是,通过谷歌登录无法持续工作。也就是说,它适用于我的朋友,而不是我的电脑,即使它适用于我昨天擦拭我的手机之前(手机被损坏)。我们的登录代码是谷歌登录的标准,问题是结果总是返回false。守则:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_screen);
        findViewById(R.id.sign_in_button).setOnClickListener(this);

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
        signInButton.setSize(SignInButton.SIZE_STANDARD);
        signInButton.setScopes(gso.getScopeArray());

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
        }
    }   

private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

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

        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();

//            mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName()));
            updateUI(acct);
        } else {
            // Signed out, show unauthenticated UI.
            noUpdateUI();
        }
    }

    private void updateUI(GoogleSignInAccount acct) {
        Intent intent = new Intent(getApplicationContext(), HomeScreen.class);

        Bundle bundle = new Bundle();
        bundle.putSerializable("NEW_USER", new ClientUser(acct));
        intent.putExtras(bundle);

        startActivity(intent);
    }


For some reason, the result is false:

    private void noUpdateUI() {
        System.out.println("**** Try again****");
//        mStatusTextView.setText(R.string.signed_out);
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    }
我想我已经正确设置了我的应用程序的凭据,因为它以前在我擦手机之前在我的桌面上工作。值得注意的是,我的朋友在他的笔记本电脑上也有同样的问题,但在他的台式电脑上却没有。不知道发生了什么事;有什么建议吗

来自sys.out的日志:

12-16 18:48:43.282 27375-27375/oose2017.place2b D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
12-16 18:48:43.412 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_launch_request id:oose2017.place2b time:3231784
12-16 18:48:43.452 27375-27375/oose2017.place2b D/Activity: performCreate Call Injection manager
12-16 18:48:43.462 27375-27375/oose2017.place2b I/InjectionManager: dispatchOnViewCreated > Target : com.google.android.gms.auth.api.signin.internal.SignInHubActivity isFragment :false
12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor mIsFloating : false
12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor flags : 8454400
12-16 18:48:43.462 27375-27375/oose2017.place2b D/SecWifiDisplayUtil: Metadata value : SecSettings2
12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null
12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled return false
12-16 18:48:43.482 27375-27375/oose2017.place2b D/SRIB_DCS: log_dcs ThreadedRenderer::initialize entered! 
12-16 18:48:43.492 27375-27584/oose2017.place2b D/mali_winsys: new_window_surface returns 0x3000,  [1440x2560]-format:1
12-16 18:48:43.542 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@174719e3 time:3231916
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{1458bd29 token=android.os.BinderProxy@e9978a8 {oose2017.place2b/oose2017.place2b.interfaces.Welcome.WelcomeScreen}} show : true
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{d3e4299 token=android.os.BinderProxy@174719e3 {oose2017.place2b/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}} show : true
12-16 18:48:48.102 27375-27375/oose2017.place2b I/System.out: ***** Try again!*****
12-16 18:48:48.132 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@e9978a8 time:3236507

创建Google登录时,需要附加android客户端密钥 像这样

  signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).
            requestScopes(new Scope(Scopes.EMAIL)).
            requestEmail().
            requestIdToken(getString(R.string.client_id)).
            build();
我也有同样的问题。 我通过以下方法解决了这个问题:

  • 我转到defaultConfig中的build.gradle(app)并将applicationId更改为我的包名(我不知道最初为什么不一样)。 我从
    compile'com.google.android.gms:play services auth:8.3.0'
    切换到
    compile'com.google.android.gms:play services auth:8.4.0'
    确保
    apply plugin:'com.google.gms.google services'
    位于build.gradle(应用程序)的底部,即依赖项之后

  • 我生成了一个新的SHA-1密钥。要生成SHA-1密钥,请在终端中粘贴此密钥:
    keytool-list-v-keystore~/.android/debug.keystore-alias androiddebugkey-storepass android-keypass android
    然后转到您的项目并选择您的项目

  • 在OAuth 2.0客户端下,单击您的android客户端密钥。按照指示粘贴生成的SHA-1密钥和包名。单击保存

  • 下载一个新的google-services.json文件并将其粘贴到您的应用程序/目录中
  • 然后再次尝试登录。希望它能起作用。
    有关更多信息,请参阅此和。它帮助我解决了我的问题

    我不得不从play services auth 16.0.0降级到

    implementation 'com.google.android.gms:play-services-auth:15.0.1'
    

    然后它工作了。

    我也有同样的问题。按下“登录”按钮时

    • 这会让注册活动重新开始
    • 登录logcat失败
    • “activity”变量将始终保持为空
    我仔细检查了一下,一切都好。我在Firebase控制台中解决了这个问题。转到身份验证>登录方法并在登录提供程序中启用Google选项

  • 列表项

  • 只是澄清一下,登录窗口正在显示,对吗?然后当你点击“登录”时,登录就失败了?@DuhProgrammer13:是的,就是这样。这个问题有什么进展吗?我在他们的示例代码中也遇到了这个问题。太好了!感谢您提供详细的步骤。第2步、第3步和第4步对我很有效。别忘了删除现有的应用程序,然后清理,首先构建应用程序