2016-11-12 8 views
12

이 질문에 대한 답변이 많은 것으로 알고 있습니다.Google Firebase 가입 상태 12501 (작동하지 않음), 릴리스 빌드 및 변형본 SHA

그래서이 질문을 다시 묻는 이유는 무엇입니까? 사촌 나는 그 해결책을 시도하고, 나는 Google docs를 따라 갔고, 자습서와 youtube를 따라 갔다. 아직도 운이 없다.

기성복, 이것이 내 프로젝트에서 수행 한 작업입니다.

프로젝트 : GoogleSignIn

dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.0' 
     classpath 'com.google.gms:google-services:3.0.0' 
     } 

Gradle을 (모듈 : 응용 프로그램)

apply plugin: 'com.android.application' 

android { 
    signingConfigs { 
     config { 
      keyAlias 'alias' 
      keyPassword 'keypass' 
      storeFile file('/home/reoxey/path/to/jks') 
      storePassword 'storepass' 
     } 
    } 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 
    defaultConfig { 
     applicationId "reoxey.com.googlesignin" 
     minSdkVersion 19 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      signingConfig signingConfigs.config 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.0.0' 
    compile 'com.android.support:design:25.0.0' 
    compile 'com.google.firebase:firebase-auth:9.8.0' 
    compile 'com.google.android.gms:play-services-auth:9.8.0' 
    testCompile 'junit:junit:4.12' 
} 

apply plugin: 'com.google.gms.google-services' 

LoginActivity.java

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(getString(R.string.web_client_key)) 
       .requestEmail() 
       .build(); 

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

     findViewById(R.id.sign_in_button).setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       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); 
      if (result.isSuccess()){ 
       Toast.makeText(getApplicationContext(),"Nailed it",Toast.LENGTH_LONG).show(); 
      }else { 
       Snackbar.make(mLoginFormView,result.getStatus().toString(),Snackbar.LENGTH_LONG).show(); 
       Toast.makeText(getApplicationContext(),"Messed",Toast.LENGTH_LONG).show(); 

      } 
     } 
    } 

string.xml

<string name="web_client_key">123456789-clientwebapplication.apps.googleusercontent.com</string> 

매니페스트에는 특별한 구성이 없으므로 아무 것도 놓치지 않았습니다.

구글 - services.json

{ 
    "project_info": { 
    "project_number": "{numeric-id}", 
    "firebase_url": "https://project--123456789.firebaseio.com", 
    "project_id": "project--123456789", 
    "storage_bucket": "project--123456789.appspot.com" 
    }, 
    "client": [ 
    { 
     "client_info": { 
     "mobilesdk_app_id": "1:{numeric-id}:android:sfdjgsdkdfgsfs", 
     "android_client_info": { 
      "package_name": "reoxey.com.googlesignin" 
     } 
     }, 
     "oauth_client": [ 
     { 
      "client_id": "{numeric-id}-androidkey.apps.googleusercontent.com", 
      "client_type": 1, 
      "android_info": { 
      "package_name": "reoxey.com.googlesignin", 
      "certificate_hash": "{sha1-from-jks-file}" 
      } 
     }, 
     { 
      "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com", 
      "client_type": 3 
     } 
     ], 
     "api_key": [ 
     { 
      "current_key": "{android-key}" 
     } 
     ], 
     "services": { 
     "analytics_service": { 
      "status": 1 
     }, 
     "appinvite_service": { 
      "status": 2, 
      "other_platform_oauth_client": [ 
      { 
       "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com", 
       "client_type": 3 
      } 
      ] 
     }, 
     "ads_service": { 
      "status": 2 
     } 
     } 
    } 
    ], 
    "configuration_version": "1" 
} 

Oright, 지금 중포 기지 콘솔.

  • JKS에서 발생하는 추가 SHA1 지문이
  • 내가 추측 그것 뿐이다

로그인의 구글에 대한 인증을 활성화 파일 패키지 이름 생성 된 프로젝트, 내가 모든 것을 제공 희망 ,
그래서 나는 무엇을 여기에서 놓치고있다.

Google 기호를 클릭하면 상태 코드 오류가 발생합니다. 나는 여기서 무엇이 잘못되었는지를 모른다. 누군가?

미리 감사드립니다.

+0

디버그 APK를 빌드하고 로그인을 시도 했습니까? –

+0

분명히 다르지만 sha1 지문 – Reoxey

+0

동일한 상태로 실패 했습니까? –

답변

0

(.이 그것을 해결 것 단계 후 나는이 문제에 직면했다.)이 단계를 시도해보십시오

1.Go을에 Google Console API 자격 증명 페이지.

2. 왼쪽 탭에서 자격 증명을 클릭하십시오.

3. 이미 기본 Android 및 웹 OAuth 클라이언트 ID가 두 개 있습니다. 하나의 안드로이드 클라이언트와 하나의 웹 2.0 클라이언트를 생성해야합니다.

4.Go에서 Firebase로 이동하십시오. 프로젝트 설정에서 google-services.json을 다운로드하고 app 폴더에 붙여 넣으십시오.

(모든 것이 괜찮습니다하지만 여전히 당신이 구글에서 어쩌면 OAuth를 문제가. 그래서 당신이 안드로이드 클라이언트와 두 웹 클라이언트 ID가 자격 증명 페이지에서 ID.Finally 안드로이드와 웹 클라이언트를 만들어야합니다 의미 로그인의 수 있습니다.)

OAuth 콘텐츠 화면 채우기

1

GoogleSignInOptions을 빌드 할 때 문자열 리소스 web_client_key을 사용합니다. 보안상의 이유로 실제 키를 게시하지 않고 대신 예제 값 123456789-clientwebapplication.apps.googleusercontent.com.을 사용했습니다.

게시 된 google-services.json에 해당 값이 표시되지 않으므로 그 값과 일치하지 않습니다. 값은이 블록에 정의 된 client_id이어야합니다.

{ 
    "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com", 
    "client_type": 3 
} 

이 값은 사용 했습니까?

는 웹 클라이언트의 ID를 얻기의 conventional waygoogle-services.json에서 Google Services Gradle Plugin에 의해 생성되는 문자열 리소스 R.string.default_web_client_id을 사용하는 것입니다.그 일을 할 수없는 이유가 있고 자신의 문자열 리소스를 정의해야합니까? default_web_client_id을 사용해 보셨습니까? 당신은 아직도 당신이 error.then을 받고 중포 기지의 모든 SHA-1 지문을 추가하는 경우

+0

예, string의'client_id'가 google-services.json과 일치하고'default_web_client_id'에 대해 알고 있습니다. 또한 그것을 시도했다. 그리고 그것은 작동하지 않습니다. – Reoxey

+1

위와 동일한 문제가 있지만 구성에 문제가 없습니다. 그것은 ISP 공급자의 문제인 것 같습니다. 나는 다른 ISP 제공자들과 함께 노력했고, 그 때 일하는 것 같다. – coder