错误"无效令牌:无法解析引用的令牌字符串"尝试使用Java中的oAuth2访问Picasaweb API时

时间:2015-06-10 15:38:59

标签: java google-oauth picasa

尝试使用Java连接到Picasa网络API时,我遇到了此错误:

<embed src = "http: //localhost/transferencias/wp-content/uploads/2014/12/Zona200.pdf#toolbar=0" type = "application / pdf" width = "100%" height = "100%">

这是我的代码:

com.google.gdata.util.ServiceForbiddenException: Forbidden
Token invalid - Invalid token: Cannot parse referred token string
    at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:605)
    at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:564)
    at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560)
    at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538)
    at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536)
    at com.google.gdata.client.Service.insert(Service.java:1409)
    at com.google.gdata.client.GoogleService.insert(GoogleService.java:613)
    at com.google.gdata.client.media.MediaService.insert(MediaService.java:380)

我认为缺少somethig,如何建立服务帐户和Picasa帐户之间的链接?我试图在范围内设置网址,例如https://picasaweb.google.com/data/entry/api/user/&#34; + USER_ID或&#34; https://picasaweb.google.com/data/feed/api/user/&#34; + USER_ID,但没有成功......

我想避免用户同意&#39;每次应用程序访问Picasa相册时都会显示对话框。

我没有找到PicasaWeb API和oAuth2的示例,所以如果有人有想法......谢谢!

编辑:我发现有关&#34;将域范围权限委派给服务帐户的信息&#34; https://developers.google.com/identity/protocols/OAuth2ServiceAccount 使用final String[] SCOPESArray = { "https://picasaweb.google.com/data/" }; final List SCOPES = Arrays.asList(SCOPESArray); final GoogleCredential credential = new GoogleCredential.Builder() .setTransport(new NetHttpTransport()) .setJsonFactory(new JacksonFactory()) .setServiceAccountId("xxx@developer.gserviceaccount.com") .setServiceAccountScopes(SCOPES) .setServiceAccountPrivateKeyFromP12File(new File("key.p12")).build(); final PicasawebService picasaService = new PicasawebService("toto"); picasaService.setOAuth2Credentials(credential); picasaService.insert(new URL(FEED_URL), album); 执行我想要的操作,但它似乎只适用于Google Apps域。

1 个答案:

答案 0 :(得分:1)

如何建立服务帐户和Picasa帐户之间的链接?

没有链接。就Google而言,服务帐户和Picasa帐户是两个不同的用户。你可能(我猜你没有解释你的用例)不想使用服务帐户。

将Picasa API和OAuth视为两个完全独立的学习练习。将OAuth视为导致您拥有访问令牌的东西,然后将Picasa API视为您将访问令牌导入的内容。尝试使用OAuth Playground(https://developers.google.com/oauthplayground/)来模拟您想要实现的目标。这将告诉您有关OAuth的所有信息,并向您展示http请求的外观,然后您可以将其与您的应用进行比较。