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

Posted

技术标签:

【中文标题】在 Android 中调用 Paypal 时无法获取访问令牌【英文标题】:Can't get access token when call in Paypal in Android 【发布时间】:2019-02-17 19:29:10 【问题描述】:

我想从 Make your first call in paypal 获取访问令牌

我正在将 Curl 转换为 Kotlin 代码

我在这里使用改造来进行 api 调用。

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "client_id:secret" \
  -d "grant_type=client_credentials"

如何使用 kotlin 和 retofit 来实现这一点?

【问题讨论】:

【参考方案1】:
interface PayPalClient 
@FormUrlEncoded
@POST("/v1/oauth2/token")
fun getAccessToken(
        @Header("Authorization") credentials: String,
        @Field("grant_type") grantType: String
): Single<PayPalAccessToken>

主活动

override fun onCreate(savedInstanceState: Bundle?) 
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val credentials = Credentials.basic(CLIENT_ID, CLIENT_SECRET)

    initRetrofit().getAccessToken(credentials, "client_credentials")
            .subscribeOn(Schedulers.io())
            .observeOn(androidSchedulers.mainThread())
            .subscribe(
                     token -> Log.d(TAG, token.accessToken) ,
                     error -> Log.d(TAG, error.localizedMessage) 
            )



private fun initRetrofit(): PayPalClient 
    return Retrofit.Builder()
            .baseUrl("https://api.sandbox.paypal.com")
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .build().create(PayPalClient::class.java)

【讨论】:

我们如何将 client_id 和 client_sceret 添加为单个字符串?那需要什么格式吗?在邮递员中,我们添加为基本身份验证? val credentials = Credentials.basic(CLIENT_ID, CLIENT_SECRET)

以上是关于在 Android 中调用 Paypal 时无法获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

PayPal此处Android SDK错误 - BadConfiguration:无法继续使用此商家帐户

PHP 验证 Paypal webhook 签名

在 Android 上登录总是失败 Paypal MPL

使用 Android Studio 实现 Paypal SDK - 无法从应用程序登录

通过开发者用户名密码无法登录paypal

PayPal 集成和沙盒测试帐户 Android