こんにちは、主に認証手順で、Google ドライブ SDK へのアクセスに問題があります。
.Net Web アプリに と の 2 つのメイン ページがDefault.aspx.cs
ありWebForm1.aspx.cs
ます。ユーザーがリンクをクリックしたときにユーザーをに連れDefault.aspx
てhyperlink
行くコントロールがあります:Google authentication page
https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/drive.file+https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&redirect_uri=http://localhost/GoogleDriveTest/GoogleDriveTest/GoogleDriveTest/WebForm1.aspx&state=/profile&client_id=*CLIENT_ID*&approval_prompt=force
REDIRECT_URI
ユーザーが( ) にリダイレクトされたら、WebForm1
次のコードを使用してコードにアクセスしauthorization
ます。
HttpRequestInfo request = new HttpRequestInfo(Request);
code = Request.QueryString["code"];
今、私は立ち往生しています。POST
このコードを次 のようにする必要があることはわかっています。
https://accounts.google.com/o/oauth2/token <insert POST parameters here>
しかし、私はこれを行う方法について完全に立ち往生しています。私は多くのことを試しましたが、私が得ているのは次のとおりです。
Server time out error - it failed to connect to the requested server
この問題を解決するにはどうすればよいですか?
編集 24/09/2012:
Visual Studio 2012 の新しいリリースでは、認証を処理するように OAuth が組み込まれています: http://www.asp.net/vnext/overview/videos/oauth-in-the-default-aspnet-45-templates
これは、ユーザーが Google などの外部アカウントを使用してローカル Web アプリケーションにログインできることを意味します。
これは、ユーザーが Google 経由でログインすると、必要な Google ドライブ ファイルを取得できるということですか? それとも、これは単にローカル Web アプリケーションでの登録処理を簡単にするためですか?
再度、感謝します。
これが私のエラーです:
[SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [2404:6800:4008:c01::54]:443]
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +251
System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +279
[WebException: Unable to connect to the remote server]
System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) +6098637
System.Net.HttpWebRequest.GetRequestStream() +13
GoogleDriveTest.WebForm1.Page_Load(Object sender, EventArgs e) in C:\Projects\GoogleDriveTest\GoogleDriveTest\GoogleDriveTest\WebForm1.aspx.cs:101
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
解決しました!!
私の問題は、必要な URL への接続を許可しないプロキシが職場にあることでした。だから私は自分のブラウザでプロキシをオフにし、それをバイパスして、必要なURLに直接アクセスし、アクセストークンを正常に取得しました:D