0

ユーザーに代わって Google API へのサーバー側リクエストを実行する必要があるアプリケーションを開発しています。

基本的に、私のアプリケーションはこれを行います: gapi javascript ライブラリを使用すると、認証が要求され、access_token がそのトークンの問題を取得します。そのトークンは短命であり、javascript google api を使用してわかる限り、それを拡張することはできません。今私の質問は、サーバー側の 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 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 を拡張する方法のサンプルを誰かが提供できれば、それは素晴らしいことです。それが可能なら。

4

1 に答える 1