获得贝宝的访问令牌从令牌刷新
问题描述:
当我尝试通过卷曲或成功邮递员得到响应从刷新令牌获得的access_token,获得贝宝的访问令牌从令牌刷新
REQUEST
POST /v1/oauth2/token HTTP/1.1
Host: api.sandbox.paypal.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic QVZZeWdRa2dSX3pScmtJT25PZXVz.....
Cache-Control: no-cache
grant_type=refresh_token&refresh_token=-Q1_6fEwUDQ0ci0CJIA......
结果
{
"scope":"phone https://uri.paypal.com/services/subscriptions https://api.paypal.com/v1/payments/.* address email https://api.paypal.com/v1/vault/credit-card https://uri.paypal.com/services/applications/webhooks https://uri.paypal.com/services/payments/futurepayments openid https://api.paypal.com/v1/vault/credit-card/.*","nonce":"2016-11-08T13:58:45Zm5eDiRGyJIDC9EwX7DRl6aB7IPlRl-cjoS_E3Ro8sCo",
"access_token":"A103.CfI6WQaDmEqrQ.....",
"token_type":"Bearer",
"app_id":"APP-80W28448....",
"expires_in":28796
}
但是,当我做贝宝网SDK这样一回事,
var apiContext = PaypalConfiguration.GetAPIContext();
var tokenInfo = new Tokeninfo();
tokenInfo.refresh_token = "-Q1_6fEwUDQ0ci0CJIA7BtG_Ey4i....";
var refreshTokenParams = new CreateFromRefreshTokenParameters();
var token = tokenInfo.CreateFromRefreshToken(apiContext, refreshTokenParams);
我不断收到这个响应,
{
"error_description":"POST /v1/oauth2/token returned a response status of 400 Bad Request",
"error":"400",
"correlation_id":"46ecefc761f3f",
"information_link":"https://developer.paypal.com/docs/api/#errors"
}
我的模式设置为沙盒,客户端ID和客户端密钥是正确的为沙盒。
能否请你告诉我,我错了或者有什么问题Paypal-NET-SDK?
答
尝试它对于.NET SDK
byte[] bytes = Encoding.UTF8.GetBytes("ClientId:ClientSecret");
string base64 = Convert.ToBase64String(bytes);
var client = new RestClient("https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "3c08eb6d-d6fb-a622-5d21-e9f1a6daa3ce");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("authorization", "Basic " + base64);
request.AddParameter("application/x-www-form-urlencoded", "grant_type=refresh_token&refresh_token=" + dataFilter.RefreshToken, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);