当我使用Google.GData.Client
.NET库并尝试启动OAuth
会话时,它会正常工作,直到会话到期.当我做我的初始GetAccessToken
请求时,似乎RefreshToken
值是null
.
Step1(default.aspx):
OAuth2Parameters parameters = new OAuth2Parameters();
//<<build parameters with keys and CLIENT_IDs and such>>
string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Response.Redirect(authorizationUrl);
Run Code Online (Sandbox Code Playgroud)
Step2(oauth.aspx):
Session["ACCESS_CODE"] = Request.QueryString["code"];
Response.Redirect("Results.aspx");
Run Code Online (Sandbox Code Playgroud)
Step3(results.aspx)
if (Session["ACCESS_CODE"] == null)
Response.Redirect("Default.aspx");
parameters.AccessCode = Session["ACCESS_CODE"].To_String();
OAuthUtil.GetAccessToken(parameters);
Response.Write("OAuth Access Token: " + parameters.AccessToken);
Session["ACCESS_TOKEN"] = parameters.AccessToken;
Session["REFRESH_TOKEN"] = parameters.RefreshToken;
Run Code Online (Sandbox Code Playgroud)
当我在这一点检查代码时我的RefreshToken == null
.因为这个我不能打电话
OAuthUtil.RefreshAccessToken(parameters);
Run Code Online (Sandbox Code Playgroud)
没有得到价值null
的错误不能.
使用OAuth 2.0离线流程时,您只有在用户首次交换授权代码并授予对您的应用的访问权限时才会收到刷新令牌.您应该将该刷新令牌存储在数据库中以供以后使用.
如果您在任何时候需要为用户提供刷新令牌并且您没有在数据库中使用它或者您拥有的令牌已损坏或被撤销,则必须将用户发送回授权页面以便它可以再次授予访问权限并为您提供新的刷新令牌.
在谷歌驱动器SDK文档详细地介绍了这一过程.此外,还有一个完整的ASP.NET MVC应用程序,您可以将其用作参考.
归档时间: |
|
查看次数: |
3605 次 |
最近记录: |