【发布时间】:2012-06-05 19:32:49
【问题描述】:
如何以编程方式向 Google 进行身份验证? 现在 ClientLogin (https://developers.google.com/accounts/docs/AuthForInstalledApps) 已弃用,我们如何使用 OAuth2 对 Google 执行编程身份验证?
使用 ClientLogin 我们可以发布一个帖子到 https://www.google.com/accounts/ClientLogin 使用电子邮件和密码参数并获取身份验证令牌。
使用 OAuth2 我找不到解决方案!
#我的应用程序是一个 java 后台进程。 我看到以下链接:developers.google.com/accounts/docs/OAuth2InstalledApp#refresh,如何使用刷新的令牌获取新的访问令牌。
问题是当我有一个新的有效访问令牌时,我找不到一个关于如何实例化 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();
}
}
有什么问题?
【问题讨论】:
-
我已经记录了一个使用 Javascript 并在此处获取授权令牌的示例 alexroque.com/?p=307 希望它有所帮助,您要做的是确保我们的返回 URI 在您的 API 控制台中正确设置,并且您从响应中正确解析令牌。
-
能否请您发布您的解决方案以及它是如何解决的。我也面临同样的问题
-
能否请您发布您的解决方案的代码。
-
对于那些寻求解决方案的人,我已经发布了一个作为答案stackoverflow.com/a/34561285/752167
标签: java google-oauth google-login