尝试使用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域。
答案 0 :(得分:1)
如何建立服务帐户和Picasa帐户之间的链接?
没有链接。就Google而言,服务帐户和Picasa帐户是两个不同的用户。你可能(我猜你没有解释你的用例)不想使用服务帐户。
将Picasa API和OAuth视为两个完全独立的学习练习。将OAuth视为导致您拥有访问令牌的东西,然后将Picasa API视为您将访问令牌导入的内容。尝试使用OAuth Playground(https://developers.google.com/oauthplayground/)来模拟您想要实现的目标。这将告诉您有关OAuth的所有信息,并向您展示http请求的外观,然后您可以将其与您的应用进行比较。