在Google服务帐户中将访问令牌设为Null

问题描述 投票:0回答:2

我正在使用Google服务帐户从服务端使用以下代码访问令牌。但我获取访问令牌为Null。相同的返回令牌将用于在客户端为同一userEmailId打开Goog​​le文件选择器。请在我的代码中建议我做错了什么。

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;
                }
            }
java google-app-engine google-api google-oauth2
2个回答
0
投票

我遇到了类似的问题。答案似乎只是简单地从credential.getRefreshToken()改为credential.refreshToken()

那应该解决这个问题


0
投票

对于那些使用Firebase Admin SDK,因此使用GoogleCredentials类的用户,可以这样做。

GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount).createScoped(Arrays.asList("https://www.googleapis.com/auth/firebase.messaging"));
credentials.refresh();
credentials.getAccessToken();
© www.soinside.com 2019 - 2024. All rights reserved.