【问题标题】:paypal 400 bad request error getting at WebResponse response = request.GetResponse();在 WebResponse response = request.GetResponse() 处出现 paypal 400 错误请求错误;
【发布时间】:2013-09-11 09:36:50
【问题描述】:

我正在尝试为沙盒测试帐户集成 paypal api。当我尝试从请求代码中获取访问令牌时,出现 400 错误请求错误。

cshtml:转到贝宝 JS:函数GetPaypal(){ window.location = "https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=clientid&response_type=code&scope=Email&redirect_uri=http://localhost:4427/"; }

C#代码: 我正在使用以下代码获取代码。 :

公共 ActionResult 索引(字符串代码)

{
        if (code != null)
        { 
            string postcontents = string.Format("client_id={0}&client_secret={1}&grant_type=authorization_code&redirect_uri={2}&code={3}"
                                      , System.Web.HttpUtility.UrlEncode("client_id")
                                      , System.Web.HttpUtility.UrlEncode("Client Secret")
                                      , System.Web.HttpUtility.UrlEncode("http://localhost:4427/")
                                      , System.Web.HttpUtility.UrlEncode(code));
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice");
            request.Method = "POST";
            byte[] postcontentsArray = System.Text.Encoding.UTF8.GetBytes(postcontents);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postcontentsArray.Length;
            //OAuth.
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(postcontentsArray, 0, postcontentsArray.Length);
                requestStream.Close();
                WebResponse response = request.GetResponse();
                using (Stream responseStream = response.GetResponseStream())
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseFromServer = reader.ReadToEnd();
                    reader.Close();
                    responseStream.Close();
                    response.Close();
                    // return SerializeToken(responseFromServer);
                    dynamic dynObj = JsonConvert.DeserializeObject(responseFromServer);
                    string token = dynObj["access_token"];
                    //token = ser.Deserialize<ImportContacts._Default.GoogleOAuthToken>(responseFromServer);
                }
            }
        }
        return View();

}

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-4 paypal


    【解决方案1】:

    请更改您的 CSHTML 网址如下:-

     <script type="text/javascript">
            function GetGmailContacts() {
                window.location = "https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=clientid&response_type=code+id_token&scope=openid profile email&redirect_uri=localhost_url";
            }  
      </script>
    

    C#代码:-

    public ActionResult Index(string code,string id_token)
      {
            if (code != null)
            { 
                string postcontents = string.Format("client_id={0}&client_secret={1}&grant_type=authorization_code&redirect_uri={2}&code={3}"
                                          , System.Web.HttpUtility.UrlEncode("client_id")
                                          , System.Web.HttpUtility.UrlEncode("Client Secret")
                                          , System.Web.HttpUtility.UrlEncode(localhost_url)
                                          , System.Web.HttpUtility.UrlEncode(code));
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice");
                request.Method = "POST";
                byte[] postcontentsArray = System.Text.Encoding.UTF8.GetBytes(postcontents);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postcontentsArray.Length;
                //OAuth.
                using (Stream requestStream = request.GetRequestStream())
                {
                    requestStream.Write(postcontentsArray, 0, postcontentsArray.Length);
                    requestStream.Close();
                    WebResponse response = request.GetResponse();
                    using (Stream responseStream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(responseStream))
                    {
                        string responseFromServer = reader.ReadToEnd();
                        reader.Close();
                        responseStream.Close();
                        response.Close();
                        // return SerializeToken(responseFromServer);
                        dynamic dynObj = JsonConvert.DeserializeObject(responseFromServer);
                        string token = dynObj["access_token"];
                        //token = ser.Deserialize<ImportContacts._Default.GoogleOAuthToken>(responseFromServer);
                    }
                }
            }
            return View();
    }
    

    我希望它会起作用。

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2019-07-17
      • 1970-01-01
      • 2013-04-28
      • 2017-05-31
      相关资源
      最近更新 更多