1

現在、私は自分のプレイリストを受け取るマルチクライアント 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 アドレスのデフォルト チャネルのみを持つ別のアカウントを持っていますが、この種のアカウントでは何も構成しなくても何とか機能します。

誰かが同じことを経験したか、私が間違っていることを知っていますか?

前もって感謝します

4

0 に答える 0