gpt4 book ai didi

android - Paypal Basic 访问认证中的无效 URL

转载 作者:行者123 更新时间:2023-11-29 00:21:39 26 4
gpt4 key购买 nike

您好,感谢您的帮助。

我尝试从我的 Android 应用程序获取 PayPal Oauth refresh_token。

Curl 代码是:

curl 'https://api.paypal.com/v1/oauth2/token' \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Basic QWZV...==" \
-d 'grant_type=authorization_code&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob&code=EBYhRW3ncivudQn8UopLp4A28...'

我喜欢这样。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://api.sandbox.paypal.com/v1/oauth2/token");

try {
String text=CONFIG_CLIENT_ID+":"+SECRET;
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

httppost.addHeader("content-type", "application/x-www-form-urlencoded");
httppost.addHeader("Authorization", "Basic "+base64);

StringEntity se=new StringEntity("grant_type=authorization_code&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob&code="+authorization.getAuthorizationCode());
httppost.setEntity(se);

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

但我得到以下响应:

无效网址

请求的 URL“/v1/oauth2/token”无效。


编辑编辑编辑编辑编辑编辑编辑

如果我用

HttpPost httppost = new HttpPost("https://api.sandbox.paypal.com")

我得到:

无效网址

请求的 URL“/”无效。

引用#9.8c5e6cc1.1395837240.16f01684


编辑编辑编辑编辑编辑编辑编辑

下面的代码似乎可以工作,

感谢 Sabuj Hassan 的回答。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://api.sandbox.paypal.com/v1/oauth2/token");

try {
String text=CONFIG_CLIENT_ID+":"+SECRET;
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.NO_WRAP);

httppost.addHeader("content-type", "application/x-www-form-urlencoded");
httppost.addHeader("Authorization", "Basic "+base64);

StringEntity se=new StringEntity("grant_type=authorization_code&response_type=token&redirect_uri=urn:ietf:wg:oauth:2.0:oob&code="+authorization.getAuthorizationCode());
httppost.setEntity(se);

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

但现在我从 PayPal 沙箱服务器收到以下响应:

{"error":"invalid_request","error_description":"Invalid auth code"}

最佳答案

我觉得你的代码没问题。它可以很好地将数据发送到我的托管服务器。所以我怀疑问题出在您的以下行:

String base64 = Base64.encodeToString(data, Base64.DEFAULT);

打印 base64 并查看它是否与您的 curl 命令中的 header 完全匹配。我想相信它是不同的。可能它添加了换行符(在 base64 中)。

所以使用这个:

String base64 = Base64.encodeToString(data, Base64.NO_WRAP);

请参阅其他文档 encoding flags .

关于android - Paypal Basic 访问认证中的无效 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com