ユーザーに代わって 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 を拡張する方法のサンプルを誰かが提供できれば、それは素晴らしいことです。それが可能なら。