Live Paypal 应用程序无法从身份验证代码创建令牌信息,但不在沙箱中

Posted

技术标签:

【中文标题】Live Paypal 应用程序无法从身份验证代码创建令牌信息,但不在沙箱中【英文标题】:Live Paypal Application fails to create token information from auth code but not in sandbox 【发布时间】:2017-06-03 02:16:31 【问题描述】:

在我的 Meteor Web 应用程序中,我成功地实现了一些功能,这些功能允许我通过沙盒中的 RESTful Paypal 节点 SDK 从 Paypal 的 authorizeUrl 函数获取授权码,以便将刷新令牌分配给现有用户。但是,现在我们需要将其部署到 Live 环境中,我们遇到了问题,因为 Paypal API 抱怨以下错误:

Error: Response Status: 400

这意味着请求不正确,可能是由于“语法错误”。但是,我使用的是正确的实时 API 凭据,并且授权 URL 端点是正确的 https://www.paypal.com/signin/authorize

不幸的是,当我恢复到我的沙盒模式配置时,这个错误不会发生。

作为后续,尝试将无效的授权代码传递给我的沙盒配置端点为我提供了适当的错误消息 400 和 Invalid authorization code,而实时环境没有给我这样的帮助...

我手头上最新的paypal-debug-id83d570f17357e

编辑:

事实证明,Paypal 认为 client id or secret is null,即使我已经清楚地提供了带有 client_id、client_secret、openid_client_id 和 openid_client_secret 的配置。这让我更加困惑

编辑 2:

使用相同的 Live API 凭据,我可以使用 Rest SDK 成功设置基本支付流程,但我无法使用具有相同客户端 ID 和密码的开放 ID 连接。也许这与它有关?

【问题讨论】:

【参考方案1】:

在对 API 进行了一些广泛的测试和角力之后,发现在将 Meteor.wrapAsync API 调用绑定到从节点 SDK 创建的 paypal 实例时实际上发生了配置冲突。

假设我的 Meteor.wrapAsync 调用是这样的:

var wrapGetUserInfo = Meteor.wrapAsync(openIdCxn.userinfo.get.bind(openIdCxn.userinfo), function (err, userinfo) 
    if (err) 
        console.log(err);
        throw new Meteor.Error(500, "Internal Server Error", err);
    
);

那就不干了

var userInfo = wrapGetUserInfo(returnObject.access_token, paypal);

我会的

var userInfo = wrapGetUserInfo(returnObject.access_token);

然后它不再抱怨

【讨论】:

以上是关于Live Paypal 应用程序无法从身份验证代码创建令牌信息,但不在沙箱中的主要内容,如果未能解决你的问题,请参考以下文章

用于 Azure 移动服务 (REST) 的 Live Connect 身份验证令牌

Paypal Sandbox 和 Google App Engine 的身份验证错误

身份验证请求失败 PayPal Android SDK 示例

paypal怎么认证

IOS中的paypal sdk Touch id身份验证

使用 Live Id 从通用应用程序登录到 Web Api