使用 cURL 在 android 中获取 paypal 访问令牌

Posted

技术标签:

【中文标题】使用 cURL 在 android 中获取 paypal 访问令牌【英文标题】:Get paypal access token in android with cURL 【发布时间】:2021-11-01 05:36:49 【问题描述】:

请我尝试通过调用 paypal api 端点来获取 Paypal 访问令牌,我尝试了几个代码并最终出现了几个错误,最近的一个是抛出一个 错误 401,响应消息 Unauthorized

这是我正在使用的代码


StrictMode.setThreadPolicy(policy);
try
    client = "AdmXhYPBHuOBiA16LJQGNLfzlyQ6hAU8-jwCsWIzZ97wAj2DAB_z";
    secret = "EKdd4-qSMmcwduoI_FI4ZBfj-6BsNDZD8aJm1yni_ML7Cy";
    String tokenInput = "grant_type=client_credentials";
    URL url = new URL("https://api.sandbox.paypal.com/v1/oauth2/token");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
            String up = secret + ":" + client;
    
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Authorization", "Basic " + new String(new org.apache.commons.codec.binary.Base64().encode(up.getBytes())));
       
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty("Accept-Language", "en_US");
            conn.setUseCaches(false);
            conn.setDoOutput(true);
    textview1.setText("Response code:" + conn.getResponseCode());
    textview2.setText("Response message:" + conn.getResponseMessage());
catch(Exception e)
    textview3.setText(e.toString());

我认为问题来自 grant_type=client_credentials,因为我在向 api 发出请求时不知道如何将其传递到我的代码中

【问题讨论】:

【参考方案1】:

PayPal API secret属于客户端 android 或 Web 应用程序。

API 机密只能用于只有您可以控制的服务器。

您似乎实际上在寻找Native Checkout SDK for Android。

【讨论】:

我知道并且我在上面的代码中使用的 API 机密不完整,我刚刚生成。我不是在寻找适用于 Android 的 Native SDK,而是在寻找一种直接连接到 API 的方法,这样我就有更多的控制权。 我所要求的只是一种直接从 Android 使用客户端 ID 和密钥获取我的访问令牌的方法 我的回答是你永远不应该这样做。永远不要从客户端代码中使用客户端和密钥进行直接连接。

以上是关于使用 cURL 在 android 中获取 paypal 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何获取用于直接集成的 Google Pay 公钥

Android 在 google pay 中绘制自定义视图

如何在 IPN 通知 URL 中获取 pay_key?

在 Android 中调用 Paypal 时无法获取访问令牌

Razor-pay在Android中失败的Webview

Fortumo 获取计费状态 android 转到主要活动