2016-06-17 7 views
0

Googleサービスアカウントを使用して、サービス側から以下のコードを使用してアクセストークンを取得しています。しかし、私はNullとしてアクセストークンを取得しています。同じ返されたトークンを使用して、同じuserEmailIdに対してクライアント側のGoogleファイルピッカーを開きます。私のコードで間違っていることを提案してください。GoogleサービスアカウントでNullとしてアクセストークンを取得する

private static final List SCOPE = Arrays.asList("https://www.googleapis.com/auth/drive"); 

public String getAccessToken(String SERVICE_ACCOUNT_EMAIL, String SERVICE_ACCOUNT_PKCS12_FILE_PATH,String userEmailId){ 
       try { 
        HttpTransport httpTransport = new NetHttpTransport(); 
        JsonFactory jsonFactory = new JacksonFactory(); 
        GoogleCredential credential = new GoogleCredential.Builder() 
                .setTransport(httpTransport) 
                .setJsonFactory(jsonFactory) 
                .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
                .setServiceAccountScopes(SCOPE) 
                .setServiceAccountUser(userEmailId) 
                .setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) 
                .build(); 

        credential.getRefreshToken(); 
        return credential.getAccessToken(); 
       } catch (Exception e) { 
        // TODO: handle exception 
        log.severe("Error while getting Drive credentilas. 5.0"+ e.getMessage()); 
        return null; 
       } 
      }
+0

がわからない問題を解決する必要がありますが、私は非常にhttps://developers.google.comを使用することをお勧めしたいだけで credential.refreshToken()

credential.getRefreshToken() から変更することのようです/ identity/protocols/application-default-credentialsと入力します。それが失敗した場合は、cliet libに問題を提出してみてください。 https://github.com/google/google-api-java-client –

+0

@BillPrin:ご意見ありがとうございます。実際にはドメインワイド委任も使用していますが、サーバーからユーザーを偽装している間に上記のコードでNullとしてアクセストークンを取得しています側。 –

答えて

0

私は同様の問題がありました。答えは単純に、ここで間違っている正確に何

関連する問題