Google からセッション トークンを安全に取得した後に問題が発生する
これが私がやったことです。1) ワンタイムトークンを取得
string authSubUrl = AuthSubUtil.getRequestUrl("https://some.com/mypage.aspx", "http://gdata.youtube.com", true, true);
Response.Redirect(authSubUrl);
2) セッショントークンと交換
Session["YT_Token"] = AuthSubUtil.exchangeForSessionToken(Request.QueryString["token"], getRsaKey());
getRsaKey() は、Using AuthSub with the .NET Client Library にあります。
3) YouTube リクエストを行う
YouTubeRequestSettings settings = new YouTubeRequestSettings("my app name", "Google.Client.ID", "Google.Youtube.DeveloperKey", (string)Session["YT_Token"]);
YouTubeRequest ytRequest = new YouTubeRequest(settings);
...
Video newVideo = new Video();
newVideo.Title = "blah";
newVideo.Tags.Add(new MediaCategory("People", YouTubeNameTable.CategorySchema));
newVideo.Description = "des";
newVideo.YouTubeEntry.Private = true;
FormUploadToken formToken = ytRequest.CreateFormUploadToken(newVideo);
ここでエラーが発生します。ytRequest.CreateFormUploadToken で。私はこれを得る
Execution of request failed: http://gdata.youtube.com/action/GetUploadToken Google.GData.Client.GDataRequestException: Execution of request failed: http://gdata.youtube.com/action/GetUploadToken ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse()
ResponseString is yt:authenticationUnknown
セキュアな AuthSub を使用していない場合 (つまり、ステップ 1 でセキュアを false に設定し、ステップ 2 で getRsaKey() の代わりに null を設定)、コードは正常に機能します。誰かが私に欠けているものを教えてもらえますか?
本当にありがとう!