谷歌登录android 5.0(棒棒糖)或更高版本的棉花糖失败,但kitkat handleSignInResult:错误

谷歌登录android 5.0(棒棒糖)或更高版本的棉花糖失败,但kitkat handleSignInResult:错误,android,google-signin,Android,Google Signin,谷歌登录android5.0(棒棒糖)或更高版本的Marshmallow失败,但kitkat上的没有,kitkat正常工作。。我尝试了一些设备和模拟器,但始终无法登录 应用程序只显示来自snackbar的消息,因为handleSignInResult:false 我怎样才能解决这个问题 这是我的密码 package com.emergency.e_place; import android.content.Intent; import android.os.Bundle; import and

谷歌登录android
5.0(棒棒糖)
或更高版本的
Marshmallow
失败,但kitkat上的
没有,kitkat正常工作。。我尝试了一些设备和模拟器,但始终无法登录

应用程序只显示来自
snackbar
的消息,因为
handleSignInResult:false

我怎样才能解决这个问题

这是我的密码

package com.emergency.e_place;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.emergency.e_place.Util.SessionManager;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;

public class LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {

    SignInButton signInButton;
    GoogleApiClient mGoogleApiClient;
    private final int RC_SIGN_IN = 100;
    SessionManager session;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        setSession();
        setGoogleSignInAccount();
        declareWidget();
        setClickWidget();
    }

    private void setSession() {
        session = new SessionManager(LoginActivity.this);
    }


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

    @Override
    protected 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) {
        Log.d("Hasil", "handleSignInResult:" + result.isSuccess());
        Log.d("Hasil", "handleSignInResult:" + result.toString());
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();
            String nama = acct.getDisplayName();
            String email = acct.getEmail();
            String id = acct.getId();
            String foto = String.valueOf(acct.getPhotoUrl());

            session.createLoginSession(id,nama,email,foto);


            Intent i = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);
            finish();
        } else {
            Snackbar.make(((ViewGroup) findViewById(android.R.id.content)).getChildAt(0), "GAGAL LOGIN", Snackbar.LENGTH_SHORT).show();
        }
    }

    private void setGoogleSignInAccount() {
        // Configure sign-in to request the user's ID, email address, and basic profile. ID and basic profile are included in DEFAULT_SIGN_IN.
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

        // Build a GoogleApiClient with access to the Google Sign-In API and the options specified by gso.
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
    }



    private void setClickWidget() {
        signInButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setButtonGooglesignIn();
            }
        });
    }

    private void declareWidget() {
        signInButton = (SignInButton) findViewById(R.id.signin_login_signin);
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Toast.makeText(getApplicationContext(),connectionResult.getErrorMessage(),Toast.LENGTH_LONG).show();
    }
}

这是因为我没有注册OAuth2.0客户端ID

转到>选择您的项目菜单凭据

然后

  • 单击创建凭据
  • OAuth客户端ID
  • 在应用程序类型中选择android
  • 输入名称
  • 使用以下命令输入SSA-1:keytool-exportcert-keystore路径以调试或生产keystore-list-v
  • 输入您的包名
  • 单击创建
  • 下载JSON
  • 将刚下载的文件复制到项目中的文件夹应用程序
  • 确保你的设置GoogleSigninaCount有这样的代码

  • 您是否正在请求在棉花糖或更高版本的设备上运行时权限。不,我无法登录android棒棒糖或更高版本发布问题之前,请进行彻底搜索。。
    mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                    .build();