Androidアプリをユーザーがアプリから直接YouTubeチャンネルにストリーミングできるアプリを実装しています。APIキーとOAuth 2.0クライアントID-
しかし、私は次の例外を取得します: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
私は明らかに何か間違ったことをしましたが、私は何を理解できません。どんな助けでもありがたいです。前もって感謝します
問題は、デバッグ時に〜/ .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インターフェースに挿入すると、機能することがわかります。
私の場合、UNREGISTERED_ON_API_CONSOLEエラーは、AndroidManifestのパッケージ名のスペルミスが原因でした。シンプルですが、キーとSHAに苦労して多くの時間を失いました。
これまでの回答を参考にして、地雷を理解して修正するための参照として使用し、地雷を修正する方法を段階的に簡単に説明しました。
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
グーグルクラウドコンソールのウェブページでこれを行います
左側のタブで、「APIとサービス」を見つけてクリックします
次に、新しいページの左側のタブで、[資格情報]を見つけてクリックします
windowsコマンドプロンプトからコピーしたキーをコピーして、「署名証明書の指紋」の下のテキストボックスに貼り付けます。
アプリとGoogle Cloud ConsoleのアプリケーションIDが一致していることを確認してください。
私はこの問題を抱えており、多くの検索の後、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"
}