在 Rails 应用程序中集成 Paypal 登录不起作用
Posted
技术标签:
【中文标题】在 Rails 应用程序中集成 Paypal 登录不起作用【英文标题】:Integrating Paypal Login in Rails app not working 【发布时间】:2014-06-18 09:11:43 【问题描述】:我正在尝试将 Paypal 登录功能集成到我的 Rails 应用程序中,但无法正常工作。
我正在关注指南:http://cristianobetta.com/blog/2013/09/27/integrating-login-with-paypal-into-rails/
我从 paypal 开发者网站创建了一个应用程序,并设置了以下内容:
应用返回URL(测试):http://localhost:3000/auth/paypal/callback 应用返回URL(live):http://localhost:3000/auth/paypal/callback我得到了错误:
“依赖方验证错误:请求中提供的redirect_uri与注册的redirect_uri不匹配。请检查请求。”
当我尝试访问 URL 时:
http://localhost:3000/auth/paypal
有趣的是,如果我在官方的 Paypal API 集成工具中输入我的应用程序凭据,我会得到同样的错误:
https://devtools-paypal.com/guide/openid/ruby?interactive=ON&env=sandbox
有什么想法吗?
谢谢
【问题讨论】:
无法从您的计算机外部访问 URLhttp://localhost:3000
。如果您想对此进行测试,您将不得不设置托管。
它是你的本地浏览器必须访问该 URL,所以理论上 localhost 是可以的。
【参考方案1】:
自接受答案以来,这已经发生了一些变化,并且可能很快会再次发生变化......但现在是这样做的。
登录 developer.paypal.com 点击仪表板 (https://developer.paypal.com/developer/applications) 在“Rest API 应用”下点击您的应用名称 滚动到屏幕底部标有“沙盒(或实时)应用设置”的框 设置返回 URL(测试交易后将重定向用户的位置) 点击保存注意
此返回 URL 必须与您通过查询字符串传入的 redirect_uri 完全匹配(因此,您首先需要传入它的原因令人困惑)
GOTCHA
此时,返回 URL 似乎永远无法更新。根据我最近的经验,如果您在第一次保存时没有正确输入,您将不得不创建一个新应用程序。
【讨论】:
感谢您提到这个问题!我为此浪费了一个小时,因为我不小心将重定向设置为不安全的 uri,而且我不明白为什么在更改重定向后它会因重定向错误而失败。 Nitrous 用户,这样设置返回 URL 对我有用:http://ruby-on-rails-1xxxx3.nitrousapp.com:3000/auth/paypal/callback
【参考方案2】:
您需要在开发者网站上的沙盒应用程序中设置此值。
登录developer.paypal.com 点击应用程序 在我的其他应用下单击您的应用名称 点击应用重定向网址旁边的编辑 设置实时或测试的返回 URL 保存【讨论】:
感谢您的快速回复 Aaron,我刚刚用我当前用作重定向 URL 的 URL 更新了我的问题:- 应用返回 URL(测试):http://localhost:3000/auth /paypal/callback - 应用返回URL(live):http:///localhost:3000/auth/paypal/callback 是不是我本地环境无法设置返回URL? 通常你还需要在 auth token 的设置中传递返回 url。当我使用 javascript 执行此操作时,我需要传递我的 appid、returnurl 和范围。 另外,我将 uri 更改为 localhost,只要我将其附加到请求 url,它就可以正常工作:&redirect_uri=http://localhost/login/
为什么这被标记为答案?问题表明已采取这些步骤。这里的真正答案是什么?【参考方案3】:
我通过将实时重定向 URL 和测试重定向 URL 设置为相同的东西来解决它。
另外,我确保勾选了从高级设置面板获取个人信息,还添加了隐私和协议链接的 URL。
当这些链接设置为 localhost 地址时,门户会挂起,因此可能是 PayPal 试图取消引用它们,所以我输入了真实的虚假 URL。
【讨论】:
【参考方案4】:我自己也遇到了这个问题,尽管是在 Sinatra 而不是 Rails 应用程序中 - 像你一样,我使用 http://localhost:4567/auth/paypal/callback
作为返回 URL - 在 PayPal 开发门户上将其更改为 http://127.0.0.1:4567/auth/paypal/callback
并从 127.0 访问我的应用程序.0.1 而不是 localhost 为我修复了它。
【讨论】:
查看@broox 的回答,因为他有一个非常 有趣的陷阱!我想最初我将我的条目设置为127.0.0.1:4567
并将其“更改”为localhost:4567
。以上是关于在 Rails 应用程序中集成 Paypal 登录不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Rails:Localhost 中的 PayPal Express Checkout 集成