При попытке подключиться к Picasaweb API в Java, я получил эту ошибку:Ошибка «Недопустимый маркер: Невозможно разобрать называемый маркер строки» при попытке получить доступ к Picasaweb API с oauth2 из Java
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)
Здесь мой код:
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("[email protected]")
.setServiceAccountScopes(SCOPES)
.setServiceAccountPrivateKeyFromP12File(new File("key.p12")).build();
final PicasawebService picasaService = new PicasawebService("toto");
picasaService.setOAuth2Credentials(credential);
picasaService.insert(new URL(FEED_URL), album);
Я думаю somethig отсутствует, как связь между учетной записью службы и учетной записью Picasa сделана? Я попытался было URL в объеме, как https://picasaweb.google.com/data/entry/api/user/ «+ USER_ID или» https://picasaweb.google.com/data/feed/api/user/ "+ USER_ID, но без успеха ...
Я хочу, чтобы избежать„согласия пользователя“диалог каждый раз, когда приложению доступ к альбому Picasa.
я не нашел примеры PicasaWeb API и oauth2, так что если кто-нибудь есть идея ... Спасибо
Edit: я нашел информацию о «делегировании общедоменного полномочия для учетной записи службы» https://developers.google.com/identity/protocols/OAuth2ServiceAccount которые делают то, что я хочу, с setServiceAccountUser("[email protected]")
, но, похоже, он работает только для доменов Google Apps.
Спасибо @pinoyyid. Мой вариант использования: приложение (а не из пользовательского интерфейса, я хочу, чтобы пользовательское согласие не было) каждый раз должен создавать альбомы в учетной записи Picasaweb. – Thierry
Эта страница: https://developers.google.com/identity/protocols/OAuth2WebServer описывает, что мне нужно. Я могу запросить согласие пользователя только в первый раз, а затем использовать токен обновления. Спасибо, что поставили меня в правильном направлении. Я напишу свой код, когда он сработает. – Thierry
Этот ответ даст вам долгий путь http://stackoverflow.com/questions/19766912/how-do-i-authorise-an-app-web-or-installed-without-user-intervention-canonic – pinoyyid