0

ここで詳述されているプロセスを再現しようとしています。https://developers.google.com/accounts/docs/OAuth2WebServer#handlingtheresponse

C#で

        String authorizationCode = String.Empty;
        String consumerKey       = String.Empty;
        String consumerSecret    = String.Empty;
        String redirectUrl       = String.Empty;
        String grantType         = String.Empty;
        String requestContent = String.Empty;
        HttpWebRequest request = null;
        byte[] byteArray = null;
        Stream dataStream = null;
        WebResponse response = null;
        StreamReader reader = null;
        String serverResponse = String.Empty;

        byte[] authorizationResult = null;

        try
        {
            authorizationCode = HttpUtility.UrlEncode(context.Request.QueryString["code"]);
            consumerKey       = Properties.Settings.Default.GoogleConsumerKey;
            consumerSecret    = Properties.Settings.Default.GoogleConsumerSecret;
            redirectUrl       = Properties.Settings.Default.RedirectUrl;
            grantType = "authorization_code";

            request = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token");
            request.Method = "POST";

            requestContent = String.Format("code={0}&client_id={1}&client_secret={2}&redirect_url={3}&grant_type={4}",authorizationCode,consumerKey,consumerSecret,redirectUrl,grantType);
            byteArray = Encoding.UTF8.GetBytes(requestContent);

            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = byteArray.Length;

            dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            response = request.GetResponse();
            dataStream = response.GetResponseStream();

            reader = new StreamReader(dataStream);
            serverResponse = HttpUtility.UrlDecode(reader.ReadToEnd());

            reader.Close();
            dataStream.Close();
            response.Close();



        }
        catch (System.Exception ex)
        {
            throw ex;
        }
        finally
        {

        }

問題は、GetResponse() を呼び出すときに、Bad Request が発生することです。

ConsumerKey と Secret は、アプリケーションを登録したときに Google から取得したものです。authenticationCode も Google から取得されます。

私が間違っていることは何ですか?

前もって感謝します。

4

1 に答える 1

0

私は同じ問題を抱えていました:「using」キーワードがそれを解決しました。リンクをたどってください:

https://stackoverflow.com/a/1968543/1820776

于 2014-01-12T11:53:54.213 に答える