我正在开发应用程序,我需要代表用户对google API执行服务器端请求。
在基本术语中,我的应用程序执行此操作: 使用gapi javascript library请求身份验证并获取access_token 这个令牌的问题是它的短暂存在,并且我无法扩展它,只要我可以告诉使用javascript google apis。 现在我的问题是拥有那个短暂的令牌,我如何使用服务器端SDK(在我的情况下是c#)或直接WebClient连接来请求长期存在(refresh_token)?
当客户端身份验证完成后,我有这些数据:
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
//Authentication successful
//authResults.access_token - has a valid token that expires in 60 minutes
//Say token set to this:ya29.AHES6ZRadMF0y*********c8GOC8KYZFkc6q1fCeT_Q
//Now I can send it using ajax to the server handler to try to extend
} else {
$("#google-cal-authorize-button").button("enable");
}
}
因此,一旦令牌可用,我正试图在服务器上扩展它,它失败我必须做错事 以下来自https://developers.google.com/accounts/docs/OAuth2WebServer#offline的示例 使用WebClient
WebClient wc_ = new WebClient();
NameValueCollection prms = new NameValueCollection();
prms["client_id"] = "91884************n4v.apps.googleusercontent.com";
prms["client_secret"] = "cANBL0*********lMK4";
prms["refresh_token"] = "ya29.AHES6ZRadMF0y*********c8GOC8KYZFkc6q1fCeT_Q";
prms["grant_type"] = "refresh_token";
wc_.UploadValuesCompleted += (object sender, UploadValuesCompletedEventArgs e) =>
{
};
wc_.Headers.Add("Content-type", "application/x-www-form-urlencoded");
byte[] response = wc_.UploadValues(new Uri("https://accounts.google.com/o/oauth2/token"), "POST", prms);
此外,我可以在服务器端访问Google.Apis Beta v1.5 http://www.nuget.org/packages/Google.Apis/1.5.0-beta,但无法找到有关如何结合使用这两个库的示例。
因此,如果有人可以提供有关如何扩展客户端生成的短期access_token在服务器上的样本将是很好的。如果可能的话。
答案 0 :(得分:1)
您无法扩展客户端生成的短期access_token"。这不是oauth的工作方式。
您可以采取两种方法: -