3

.NET ライブラリを使用してセッションGoogle.GData.Clientを開始しようとするとOAuth、セッションが期限切れになるまで問題なく動作します。最初のGetAccessTokenリクエストを行ったとき、RefreshToken値はnull.

ステップ 1 (default.aspx):

OAuth2Parameters parameters = new OAuth2Parameters();
//<<build parameters with keys and CLIENT_IDs and such>>
string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Response.Redirect(authorizationUrl);

ステップ 2 ( oauth.aspx ):

Session["ACCESS_CODE"] = Request.QueryString["code"];
Response.Redirect("Results.aspx");

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;

この時点でコードを調べると、RefreshToken == null. このため、私は呼び出すことができません

OAuthUtil.RefreshAccessToken(parameters); 

値のエラーを取得せずにはできませんnull

4

1 に答える 1

5

OAuth 2.0 オフライン フローでは、ユーザーが初めて認証コードを交換してアプリへのアクセスを許可したときにのみ、更新トークンを受け取ります。後で使用するために、その更新トークンをデータベースに保存する必要があります。

ユーザーのリフレッシュ トークンが必要で、データベースにトークンがない場合、または所有しているトークンが破損しているか取り消されている場合は、ユーザーを承認ページに送り返して、再度アクセスを許可できるようにする必要があります。新しいリフレッシュ トークンを提供します。

Google ドライブ SDKのドキュメントでは、このプロセスについて詳しく説明しています。また、参考として使用できる完全な ASP.NET MVC アプリケーションもあります。

于 2012-08-22T16:36:39.203 に答える