2016-06-14 18 views
2

Firebaseを学びたいので、Android Codelabを使いました。彼らは私を与えたこのプロジェクトは、しかし、エラーが持っていた:FirebaseのAndroid Codelabでシンボルdefault_web_client_idを解決できません

Cannot resolve symbol default_web_client_id

をそして、私はdefault_web_client_idの値または何それは知らなかったので、私は、それを解決する方法を知りませんでした。それはonCreate()方法である: SigninActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_in); 
    mFirebaseAuth = FirebaseAuth.getInstance(); 

    // Assign fields 
    mSignInButton = (SignInButton) findViewById(R.id.sign_in_button); 

    // Set click listeners 
    mSignInButton.setOnClickListener(this); 

    // Configure Google Sign In 
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(getString(R.string.default_web_client_id)) 
      .requestEmail() 
      .build(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 
} 

私はその価値があるものだ、それが何であるか見当がつかない、そしてなぜそれが私にこのエラーを与えています。私はgoogle-services.jsonを追加する以外はこれまで何も変更していません。私はSHA-1を追加し、コンソールでGoogleを有効にしました。

+0

あなたはdeveloper.WordからAuth 2.0に登録する必要があります。 Auth 2.0キーを生成するには、https://console.developers.google.com/apis/credentials?project=_ –

+0

@ M.WaqasPervezを使用してください。既にSHA1キーを追加しましたが、Auth2.0が異なっていますか? –

+0

「app/build.gradle」の下に 'apply plugin: 'com.google.gms.google-services''という行があることを確認できますか?[here](https:// firebase .google.com/docs/android/setup#add_the_sdk)? –

答えて

12

解析中に問題が発生することがあります。google-services.json私はこの問題を関連チームに報告しました。

一方、さらに軌道に乗るために、この問題を解決するためにステップの下に従ってください -

1)オープンgoogle-services.jsonファイル - >クライアント - > oauth_client - >

2をCLIENT_ID)このクライアントIDをコピーし、この.requestIdToken("your ID")

をハードコーディング

GoogleSignInAccountを使用して「IdToken」をリクエストし、成功したGoogleログインを送信し、firebaseでクレデンシャルを認証することができます。

EDIT

より一般的なソリューションは、アプリケーションのルートディレクトリにgoogle-services.jsonを追加することですあなたのAndroidプロジェクトに

+0

これは、oauth_client:oauth_client:[] 'にはIDがないので、ファイル内のどこでも' client_id'を見つけることができません。 –

+1

@AbAppletic SHA1キーを追加し、Firebaseコンソールから設定ファイルを再ダウンロードしようとしました - プロジェクト設定 – Dexto

+0

まだ何もありません。プロジェクトを開始したばかりの場合は、SHA1 –

9

を削除して再作成プロジェクトをgoogle-service.json再インポート新しいお試しください。
さらに、build.gradleファイルの最後に

apply plugin: 'com.google.gms.google-servicesを追加します。

説明は

アプリはgoogle-services.json設定ファイルからキーと値のペアの文字列を構築しますその後、どこでも、あなたのコード内での使用に世界的に利用できるようにvalues.xmlファイルに配置されています。これにより、コード内にclient_idをハードコーディングする必要がなくなります。

はあなたのコードを実行するときにError: Duplicate resources後に、重複のエラーを回避するために、strings.xmlでその値としてclient_iddefault_web_client_idを追加しないでください。

0

Fireboxコンソールの設定を変更した後で、.jsonファイルをもう一度ダウンロードしてみてください。古いものではなく、この新しい設定ファイルを使用してください。

1

すでにgoogle-services.jsonがダウンロードされて解析されていますが、それでも文字列が見つかりません。

oauth_clientには、client_typeが1の鍵があり、それだけです。 Google APIコンソールでは、Androidキーしかありませんでした。

したがって、APIコンソールにアクセスしてWeb Serverというキーを生成する必要があります。その後、google-services.jsonをもう一度ダウンロードすると、タイプが3のoauth_clientになります。

これで、プラグインはdefault_web_client_idという文字列を生成します。

0

このリンクを使用してGoogle APIへのバックエンドIDを作成した後に修正されました。

https://developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id

  • の1- APIコンソールの資格情報]ページを開きます。

  • 2- WebアプリケーションタイプのクライアントIDは、バックエンドサーバーのOAuth 2.0クライアントIDです。

この後、あなたのJSONファイルを再ダウンロードすることができますとAndroid Studioは、自動的に文字列IDに一致します。

0

上記のいずれの回答も私の問題を解決していません。

dependencies { 
    classpath 'com.android.tools.build:gradle:3.0.1' 
    classpath 'com.google.gms:google-services:3.1.0' 
:(終わり)アプリレベルのファイル

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

とプロジェクトレベルのファイル内で

I found this とビルドのGradleファイルには、次の手順

それに加えて、私のjsonファイルはappフォルダ内にある必要がありました。しかし、このファイルのデバッグとリリースの両方のバージョンを持つオプションがあります。

私が得た唯一の実際のエラーは、いったんグラデルファイルが正しくなったということでした。その後、jsonファイルが見つからないと訴えました。

私がこれを書いた後にuser1523292の答えを見ました。

関連する問題