我正在开发应用程序,我需要代表用户执行对 google API 的服务器端请求。
在基本术语中,我的应用程序执行此操作:使用gapi javascript 库请求身份验证并获取 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 Using 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但找不到有关如何使用这些的示例2个库一起。
因此,如果有人可以提供有关如何在服务器上扩展客户端生成的短期 access_token 的示例,那就太好了。如果可能的话。