如何在 MVC 中从 PayPal 获取访问令牌
How to get access token from PayPal in MVC
我正在尝试从 PayPal 获取访问令牌。
我已将其设置为 PayPal 中的应用程序,我可以看到我的客户端 ID 和密码
我假设我不想在 javascript 前端公开我的秘密,所以我试图从 C# 获取访问代码,将令牌传递给前端,这样我就可以制作 AJAX posts/gets.
但是,它总是returns未经授权
这是我的努力
var url = "https://api.paypal.com/v1/oauth2/token";
var clientId = "myClientId";
var pwrd = "mySecret";
var client = new WebClient();
client.Credentials = new NetworkCredential(clientId, pwrd);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.Headers.Add("Accept: application/json");
var result = "";
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
return View(model: result);
我不明白为什么,当我从实时应用程序 运行 执行此操作时,它失败了
编辑
我换了
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
和
var clientId = "myClientId";
var seceret = "mySecret";
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
$"{clientId}:{seceret}")));
var dict = new Dictionary<string, string>();
dict.Add("Content-Type", "application/x-www-form-urlencoded");
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) };
var response = await client.SendAsync(req);
同样的问题仍然存在。我收到 401
而且它永远不会授权,因为 HttpClient 变量对您的凭据一无所知。
您在 WebClient 中对其进行了初始化,但并未使用它。
为了详细说明评论和其他答案,您在这里创建一个名为 client
的变量
var client = new WebClient();
client.Credentials = new NetworkCredential(clientId, pwrd);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.Headers.Add("Accept: application/json");
在接下来的代码中,您使用 client
变量 nothing。以上完全忽略,与此无关:
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
return View(model: result);
因此,使用您创建的 client
对象 -- 可能与 UploadValues
或类似对象一起使用。
我正在尝试从 PayPal 获取访问令牌。
我已将其设置为 PayPal 中的应用程序,我可以看到我的客户端 ID 和密码
我假设我不想在 javascript 前端公开我的秘密,所以我试图从 C# 获取访问代码,将令牌传递给前端,这样我就可以制作 AJAX posts/gets.
但是,它总是returns未经授权
这是我的努力
var url = "https://api.paypal.com/v1/oauth2/token";
var clientId = "myClientId";
var pwrd = "mySecret";
var client = new WebClient();
client.Credentials = new NetworkCredential(clientId, pwrd);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.Headers.Add("Accept: application/json");
var result = "";
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
return View(model: result);
我不明白为什么,当我从实时应用程序 运行 执行此操作时,它失败了
编辑
我换了
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
和
var clientId = "myClientId";
var seceret = "mySecret";
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
$"{clientId}:{seceret}")));
var dict = new Dictionary<string, string>();
dict.Add("Content-Type", "application/x-www-form-urlencoded");
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) };
var response = await client.SendAsync(req);
同样的问题仍然存在。我收到 401
而且它永远不会授权,因为 HttpClient 变量对您的凭据一无所知。 您在 WebClient 中对其进行了初始化,但并未使用它。
为了详细说明评论和其他答案,您在这里创建一个名为 client
var client = new WebClient();
client.Credentials = new NetworkCredential(clientId, pwrd);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.Headers.Add("Accept: application/json");
在接下来的代码中,您使用 client
变量 nothing。以上完全忽略,与此无关:
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(url, null);
result = response.StatusCode.ToString();
}
return View(model: result);
因此,使用您创建的 client
对象 -- 可能与 UploadValues
或类似对象一起使用。