Picasawebservice Java аутентификация запрещена

Мой ранее работающий код picasawebservice не удался, когда Google переключился на аутентификацию OAuth 2.

Я изменил код, чтобы использовать учетные данные Goodle, для которых мне нужно было настроить учетную запись службы.

Хотя при добавлении учетных данных в объект PicasawebService ошибки не возвращаются, но я не могу добавить фотографии в свой альбом.

Я получил список альбомов, используя URL https://picasaweb.google.com/data/feed/api/user/xxx?kind=album но он возвращает только общедоступный альбом профиля, а не другие альбомы в аккаунте, также, когда я использую идентификатор альбома, возвращенный фидом, я получаю ошибку "Доступ запрещен", когда я пытаюсь вставить фотографию. (ххх - я использовал как идентификатор пользователя, так и адрес электронной почты для учетной записи и получаю одинаковый результат в каждом случае).

Мне удалось установить идентификаторы alubum для личных альбомов в учетной записи, но при попытке вставить их также не удалось.

Код

      String emailAddress = "-- the email address from the Google Developers console for the credential --";
      JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
      GoogleCredential credential = null;
      try {
        HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        String[] SCOPESArray = {"https://picasaweb.google.com/data","http://picasaweb.google.com/data/feed/api"};
        final List<String> SCOPES = Arrays.asList(SCOPESArray);

        credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId(emailAddress)
            .setServiceAccountPrivateKeyFromP12File(new File("-- the p12 key file --"))
            .setServiceAccountScopes(SCOPES)
            .build();
      } catch (GeneralSecurityException ex) {
        logger.error("processUpload: Error getting Google credential " + accountBean.getZuzzAccountId() + " - " + accountBean.getAccountTitle() + " - " + ex.toString());
        uploadMessage = "Error getting a connection to the photo store - please see the administratior";
        return;
      }    

      credential.refreshToken();
      String accessToken = credential.getAccessToken();

      PicasawebService myService = new PicasawebService("Zuzz-ZuzzClub-1.2");
      myService.setOAuth2Credentials(credential);

      URL albumPostUrl = null;
      try {
        albumPostUrl = new URL("https://picasaweb.google.com/data/feed/api/user/--  my user id --/albumid/-- album id returned from feed --");
      } catch (MalformedURLException ex) {
        logger.error("processUpload: Error getting album post url for account " + accountBean.getZuzzAccountId() + " - " + accountBean.getAccountTitle() + " - " + ex.toString());
        uploadMessage = "Error getting a connection to the photo store - please see the administratior";
        return;
      }

      PhotoEntry myPhoto = new PhotoEntry();
      myPhoto.setTitle(new PlainTextConstruct(fileName));
      myPhoto.setDescription(new PlainTextConstruct(months.get(Integer.valueOf(editionMonth).intValue()) + " " + editionYear));
      myPhoto.setClient("ZuzzClub");

      MediaStreamSource myMedia = null;
      myMedia = new MediaStreamSource(imageInStream,"image/jpeg");
      if (myMedia == null) {
        logger.error("processUpload: Error generating the thumbnail photo - null media source for account " + accountBean.getZuzzAccountId() + " - " + accountBean.getAccountTitle());
        uploadMessage = "Error generating the thumbnail photo - please see the administratior";
        return;
      }
      myPhoto.setMediaSource(myMedia);

      thumbNailUrl = null;
      try {
        PhotoEntry returnedPhoto = myService.insert(albumPostUrl, myPhoto);
        ArrayList<MediaContent> mediaContent = (ArrayList<MediaContent>) returnedPhoto.getMediaContents();
        thumbNailUrl = mediaContent.get(0).getUrl();
      } catch (IOException ex) {
        logger.error("processUpload: Error adding photo to Photo store for account " + accountBean.getZuzzAccountId() + " - " + accountBean.getAccountTitle() + " - " + ex.toString());
        uploadMessage = "Error generating the thumbnail photo - please see the administratior";
        return;
      } catch (ServiceException ex) {
        logger.error("processUpload: Error adding photo to Photo store for account " + accountBean.getZuzzAccountId() + " - " + accountBean.getAccountTitle() + " - " + ex.toString());
        uploadMessage = "Error generating the thumbnail photo - please see the administratior";
        return;
      } finally {
        imageInStream.close();
      }

Похоже, проблема заключается в том, что аутентификация не предоставила разрешения на выполнение вставки, однако для учетной записи службы установлено значение "Можно редактировать" в консоли разработчика Google.

Есть ли способ узнать, какие разрешения у службы после применения учетных данных?

Кому-нибудь удалось добавить фотографии в альбом Picasa после изменения аутентификации?

0 ответов

Другие вопросы по тегам