web-dev-qa-db-ja.com

com.google.Android.gms.auth.GoogleAuthException:UNREGISTERED_ON_API_CONSOLE

Androidアプリをユーザーがアプリから直接YouTubeチャンネルにストリーミングできるアプリを実装しています。APIキーとOAuth 2.0クライアントID- enter image description here

しかし、私は次の例外を取得します:com.google.Android.gms.auth.GoogleAuthException: UNREGISTERED_ON_API_CONSOLEイベントを中止しようとしたとき、またはYouTubeチャンネルで手動で作成したイベントを取得しようとしたとき。

次のコードを使用してyoutubeオブジェクトを作成します

String accountName = mContext.getString(R.string.google_account_name);
        String apiKey = mContext.getString(R.string.google_api_key);
        String clientID = mContext.getString(R.string.google_api_client_id);
        String clientName = mContext.getString(R.string.google_api_client_name);

        GoogleAccountCredential credential =
                GoogleAccountCredential.usingOAuth2(mContext,
                        Arrays.asList(YouTubeScopes.YOUTUBE));
        credential.setSelectedAccountName(accountName);

//        String SCOPE = "audience:server:client_id:" + clientID + ":api_scope:" + YouTubeScopes.YOUTUBE;
//        GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(mContext, SCOPE);
//        credential.setSelectedAccountName(accountName);


        youtube = new YouTube.Builder(transport, jsonFactory, credential)
                .setApplicationName(clientName)
                .setYouTubeRequestInitializer(new YouTubeRequestInitializer(apiKey))
                /*.setGoogleClientRequestInitializer(new YouTubeRequestInitializer(apiKey))*/
                .build();

次に、イベントを作成します。

LiveBroadcastSnippet broadcastSnippet = new LiveBroadcastSnippet();
        broadcastSnippet.setTitle(name);
        broadcastSnippet.setScheduledStartTime(new DateTime(futureDate));

        LiveBroadcastContentDetails contentDetails = new LiveBroadcastContentDetails();
        MonitorStreamInfo monitorStream = new MonitorStreamInfo();
        monitorStream.setEnableMonitorStream(false);
        contentDetails.setMonitorStream(monitorStream);

        // Create LiveBroadcastStatus with privacy status.
        LiveBroadcastStatus status = new LiveBroadcastStatus();
        status.setPrivacyStatus("unlisted");

        LiveBroadcast broadcast = new LiveBroadcast();
        broadcast.setKind("youtube#liveBroadcast");
        broadcast.setSnippet(broadcastSnippet);
        broadcast.setStatus(status);
        broadcast.setContentDetails(contentDetails);

        // Create the insert request
        YouTube.LiveBroadcasts.Insert liveBroadcastInsert = youtube
                .liveBroadcasts().insert("snippet,status,contentDetails",
                        broadcast);

        // Request is executed and inserted broadcast is returned
        LiveBroadcast returnedBroadcast = liveBroadcastInsert.execute(); //<= This line generates the exception

私は明らかに何か間違ったことをしましたが、私は何を理解できません。どんな助けでもありがたいです。前もって感謝します

14
Jean-Paul Kouma

問題は、デバッグ時に〜/ .Android/debug.keystoreで作成されたキーストアを使用していることであり、使用していると思われる署名キーではありません。

署名されたAPKをリリースするなどのためにキーを生成するとき、このSHA1がGoogle APIインターフェースに必要なものであると思います。そうではありません。

〜/ .Androidフォルダー内のものを署名鍵に置き換えると、androiddebugkeyがないため破損しています。参考までに、自動生成キーのデフォルトのパスワードは「Android」です。

キーストアの場所に関する指示については、「デバッグ証明書の有効期限」の下にある https://developer.Android.com/studio/publish/app-signing.html を参照してください。

あなたがしなければならないこと:

1)debug.keystoreを削除してIDEを再起動します。これにより、キーエイリアスが「androiddebugkey」の新しいdebug.keystoreが生成されます。

2)IDEで新しいキーストアが生成されない場合は、Androidアプリケーションを再実行してください。今回は〜/ .Android /で生成されるはずです。

3)/ path/to/jre/binに移動し、このパスをシステム環境変数に追加します。これにより、keytoolにアクセスできるようになります。

4)デバッグキーストアのディレクトリに移動し、次のコマンドを実行します:keytool -list -keystore debug.keystore -alias androiddebugkey

5)コンソールから、キーストアのパスワード(「Android」)を入力するように求められます。

6)キーストアからSHA1キーを取得し、そのキーをAPIインターフェースに挿入すると、機能することがわかります。

15
Jan Jansz

私の場合、UNREGISTERED_ON_API_CONSOLEエラーは、AndroidManifestのパッケージ名のスペルミスが原因でした。シンプルですが、キーとSHAに苦労して多くの時間を失いました。

6
Piotr Majek

これまでの回答を参考にして、地雷を理解して修正するための参照として使用し、地雷を修正する方法を段階的に簡単に説明しました。

Windowsコマンドプロンプト。

あなたに移動Java binディレクトリ。

C:\ Program Files\Java\jdk1.8.0_111\bin>

そして、ffを入力します。コマンド

keytool -list -v -keystore "%USERPROFILE%\.Android\debug.keystore" -alias androiddebugkey -storepass Android -keypass Android

次にffを実行します。コード

keytool -list -keystore  "%USERPROFILE%\.Android\debug.keystore" -alias androiddebugkey

パスワードを尋ねられたら、「Android」と入力します(二重引用符は不要)。

上記のコードから得られたSHA1キー。それをコピーして、Googleクラウドコンソールに貼り付けます here

enter image description here

グーグルクラウドコンソールのウェブページでこれを行います

左側のタブで、「APIとサービス」を見つけてクリックします

次に、新しいページの左側のタブで、[資格情報]を見つけてクリックします

windowsコマンドプロンプトからコピーしたキーをコピーして、「署名証明書の指紋」の下のテキストボックスに貼り付けます。

アプリとGoogle Cloud ConsoleのアプリケーションIDが一致していることを確認してください。

enter image description here

2
iamjoshua

私はこの問題を抱えており、多くの検索の後、build.gadle私のapplicationIdは、Googleコンソールに入力したパッケージ名とは異なりました

defaultConfig {
    applicationId "br.com.glicado.glicado" <-- WAS WRONG, IN MY CASE THE RIGHT IS "br.com.glicado"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
0
DigaoParceiro