And*_*per 5 android google-login google-plus android-googleapiclient google-developer-tools
下面的代码我用于谷歌登录google-services.json.我在app文件夹中添加了文件.我正在使用classpath 'com.google.gms:google-services:2.0.0'在根gradle模块中.我已经在开发者控制台检查了我的包并且它正确了,我添加了SHA1密钥,我keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android在终端上运行命令(我正在使用ubuntu).我已启用Google+ API.我已创建了OAuth许可屏幕和OAuth客户端ID.当我尝试使用google登录时,我会收到以下错误
{statusCode = DEVELOPER_ERROR,resolution = null}
我检查类似的问题,但找不到合适的解决方案.码
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestProfile().requestId()
.requestEmail().requestScopes(new Scope(Scopes.PLUS_ME))
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
googleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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);
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();
} else {
// Signed out, show unauthenticated UI.
// updateUI(false);
}
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if(mGoogleApiClient.isConnected())
{
mGoogleApiClient.disconnect();
}
}
@Override
protected void onResume() {
super.onResume();
if(mGoogleApiClient.isConnected())
{
mGoogleApiClient.connect();
}
}
Run Code Online (Sandbox Code Playgroud)
表现
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- To use account credentials -->
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Run Code Online (Sandbox Code Playgroud)
小智 6
您的问题很可能是因为您从中选择了SHA1 ~/.android/debug.keystore,但未使用它来签署您的构建.
转到模块选项签名选项卡,并添加配置文件与唯一字段Store File设置为/Users/<your_user>/.android/debug.keystore
在Flavors选项卡上,在Signing Config下拉列表中选择它.
在"构建类型"选项卡上,在Signing Config您的构建类型的下拉列表中选择它(可能是Debug).
清理和重建.
我有同样的问题,这个解决方案有效.希望这会对你和他人有所帮助.
应用插件:'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
Run Code Online (Sandbox Code Playgroud)
确保这个applicationId与Manifest文件中的包名相同(大写和小写的内容)
applicationId "com.example"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Run Code Online (Sandbox Code Playgroud)
将 .requestIdToken(BACKEND_CLIENT_ID) 与您的 GoogleSignInOptions 结合使用。
如何获取 BACKEND_CLIENT_ID 可以在此处找到: https: //developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id
希望这有帮助!