現在、私は自分のプレイリストを受け取るマルチクライアント youtube サービスに取り組んでいます。FileDataStoreFactory を使用して、すべてのクライアントに必要な資格情報を保存しました。私の問題は、手動の承認後、最初の 1 時間は YouTube API にしか正常にアクセスできないことです。アクセス トークンの有効期限が切れると、複数のチャンネルを持つアカウントや他の YouTube アカウントが関連付けられているアカウントのトークンを更新できません。メインのYouTubeアカウントのみを持つ(他に何も添付されていない)クライアントの保存された資格情報で試してみると、すべて正常に動作します。したがって、特定のクライアントに対してのみ機能します。
トークンを更新しようとするたびに、「401 Unauthorized」が表示され、例外がスローされた原因に関するその他の詳細はありません..
「com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized」
これは私が承認する方法です:
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY,
client.getoAuthClientID(),
client.getoAuthClientSecret(), scopes)
.setDataStoreFactory(getDataStoreFactory(client))
.build();
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
最初に開発コンソール プロジェクトをインストール済みアプリケーションとしてセットアップしたので、適切な資格情報が得られました。
最後に、次のような YouTube インスタンスを取得します。
youTube = new YouTube.Builder(googleOAuthService.getHttpTransport(), googleOAuthService.getJsonFactory(), cred)
.setHttpRequestInitializer(cred)
.setApplicationName(applicationName)
.build();
YouTube アカウントには 3 つのチャンネルがあり、そのうちの 1 つをメイン チャンネルとして設定し、Gmail アドレスにリンクしています。<-これはうまくいかない方法です
Gmail アドレスのデフォルト チャネルのみを持つ別のアカウントを持っていますが、この種のアカウントでは何も構成しなくても何とか機能します。
誰かが同じことを経験したか、私が間違っていることを知っていますか?
前もって感謝します