0

何が悪いのか途方に暮れています。com.google.gdata.client.GoogleService$SessionExpiredException: Token invalid Token invalidAPIリクエストを行うときは常に取得しています。

次の流れがあります。

  1. ユーザーアカウントをリンク
  2. 認証情報を使用してビデオ アップロード エントリを取得する

ユーザーをリンクする (アプリケーションのアクセス許可を取得する) ために使用するコードは、 を使用してJdoDataStoreFactoryユーザー トークンを保持し、API 呼び出し間で情報を更新します。

ユーザーにアプリの承認を求めるときは、次のスコープを使用しました。

https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/youtube.readonly

使用GoogleAuthorizationCodeFlowしてloadCredentials、認証トークンを要求するときに使用したアプリケーションから userId を渡します。次に、これらの資格情報をYouTubeServicegetFeedメソッドにフィードし、ビデオ フィードの URL を要求します。http://gdata.youtube.com/feeds/api/users/default/uploads

次のようになります。

service.setOAuth2Credentials(credentials)
videoFeed = service.getFeed(new URL(USER_FEED_PREFIX + DEFAULT_USER
        + UPLOADS_FEED_SUFFIX), VideoFeed.class)

これが実行された後、私は常にスタックトレースを取得します:

com.google.gdata.client.GoogleService$SessionExpiredException: トークンが無効ですトークンが無効です

トークンが無効です

エラー 401

com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:570) で com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560) で com.google.gdata.client. .http.HttpGDataRequest.execute(HttpGDataRequest.java:538) com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536) com.google.gdata.client.Service.getFeed(Service.java) :1135) com.google.gdata.client.Service.getFeed(Service.java:998) で com.google.gdata.client.GoogleService.getFeed(GoogleService.java:645) で com.google.gdata.client. Service.getFeed(Service.java:1017)

自分のサービスへのリクエストを開始する方法は、curl 経由です。コマンドは次のようになります。

curl http://localhost:8080/user/someUserId/content

Wireshark を使用すると、リクエストに次のように表示されます。

GET /feeds/api/users/default/uploads HTTP/1.1                                                                                   
Authorization: Bearer <the_auth_token_for_the_user>
User-Agent: MyApp YouTube-Java/1.0 GData-Java/null(gzip)
X-GData-Client: MyApp
Accept-Encoding: gzip
GData-Version: 2.0
Cache-Control: no-cache
Pragma: no-cache
Host: gdata.youtube.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

私は立ち往生しています。

4

1 に答える 1

1

わかりました、私はこれを理解しました。ユーザーがアップロードした動画をクエリしようとしていましたが、どうやらアプリがそれを行うには、https://www.googleapis.com/auth/youtube構成したスコープではなく、スコープに対して承認する必要があります

于 2013-10-03T17:14:07.947 に答える