如何以编程方式向 Google 进行身份验证? 现在 ClientLogin (https://developers.google.com/accounts/docs/AuthForInstalledApps) 已弃用,我们如何使用 OAuth2 对 Google 执行编程身份验证?
使用 ClientLogin 我们可以发布一个帖子到 https://www.google.com/accounts/ClientLogin 使用电子邮件和密码参数并获取身份验证 token 。
使用 OAuth2 我找不到解决方案!
#我的应用程序是一个 java 后台进程。 我看到,点击这个链接:developers.google.com/accounts/docs/OAuth2InstalledApp#refresh, how to get a new access token using a refreshed token。
问题是当我有一个新的有效访问 token 时,我找不到关于如何实例化 Analytics 对象(例如)以执行查询的 java 示例
这是我的代码,它在调用“execute()”时返回 401 Invalid credentials:
public class Test {
static final String client_id = "MY_CLIENT_ID";
static final String client_secret = "MY_SECRET";
static final String appName = "MY_APP";
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
static String access_token = "xxxx";
static String refreshToken = "yyyyy";
public static void main (String args[]){
try {
GoogleCredential credential =
new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setClientSecrets(client_id, client_secret).build();
credential.setAccessToken(access_token);
credential.setRefreshToken(refreshToken);
//GoogleCredential
Analytics analytics = Analytics.builder(HTTP_TRANSPORT, JSON_FACTORY)
.setApplicationName(appName)
.setHttpRequestInitializer(credential)
.build();
Accounts accounts = analytics.management().accounts().list().execute();
} catch (Exception e) {
e.printStackTrace();
}
}
有什么问题?
最佳答案
检查已安装应用程序的 OAuth 2 流程:
https://developers.google.com/accounts/docs/OAuth2InstalledApp
它仍然需要用户第一次使用浏览器进行身份验证,但是您可以存储刷新 token 并将其用于后续请求。
对于替代解决方案,请查看设备流程或服务帐户,它们在同一文档集中进行了说明。
关于java - 使用 OAuth2 以编程方式向 Google 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835365/