要对付的accessToken到期,你需要从谷歌获得refreshToken。通过这个refreshToken,您可以通过简单的HTTP POST向Google的API获取新的accessToken。 Here是Google的相关文档。要获得refreshToken,您需要请求离线访问,并且可能还需要强制批准提示,详见此SO post。
forceApprovalPrompt: {google: true},
requestOfflineToken: {google: true},
我建议使用流星的HTTP package实现上述所有。所有的工具都在那里。你可能已经想通了:
var result = HTTP.post(
"https://www.googleapis.com/oauth2/v3/token",
{
params: {
'client_id': config.clientId,
'client_secret': config.secret,
'refresh_token': user.services.google.refreshToken,
'grant_type': 'refresh_token'
}
});
//Do some error checking here
var newAccessToken = result.data.access_token;
- refresh_token - 从授权 交换代码返回的刷新令牌。
- CLIENT_ID - 从 开发者控制台获得的客户端ID。
- client_secret - 从 开发人员控制台获取的客户端机密。
- grant_type - 按照OAuth 2.0 规范中的定义,此字段必须包含值refresh_token。
result.data将与以下
{ “的access_token” JSON对象: “1/fFBGRNJru1FQd44AzqT3Zg”, “expires_in”:3920, “token_type”: “承载”, }