【问题标题】:Invalid return_uri on PayPal OauthPayPal Oauth 上的 return_uri 无效
【发布时间】:2018-01-30 01:08:38
【问题描述】:

我正在尝试在网站上设置 PayPal 登录,并使用 PayPal 网站上的自定义按钮生成器来制作登录按钮:

<div id="proceed-to-confirmation-page-link" class="text-right">
    <span id="lippButton"></span>
</div>

<script src='https://www.paypalobjects.com/js/external/api.js'></script>
<script>
    paypal.use(['login'], function (login) {
        login.render({
            "appid": "<MY APP ID>",
            "authend": "sandbox",
            "scopes": "openid profile address",
            "containerid": "lippButton",
            "locale": "en-us",
            "text": "Login to PayPal to order",
            "redirect_uri": "<MyRedirectURI>"
        });
    });
</script>

我已验证 appid 和 redirect_uri 是正确的。我已经尝试过http://localhost:####/myredirecturihttp://www.myproductionsite.com/myredirecturl。我已经在 developer.paypal.com 上添加了这两个返回 url,并等待了三个小时或更长时间。

无论我做什么,我都会收到错误消息: 对于那个很抱歉 似乎不支持此操作。请返回并报告此错误,以便我们将来支持它。 (无效的 client_id 或 redirect_uri)

我了解错误消息的含义,但我已经三次检查这些消息是否正确。我错过了什么?

我阅读了 PayPal 的文档,但它严重不足——它解释了应该发生的事情,但几乎没有详细说明授权代码应该如何返回到我的站点。如果您能指出我进一步的文档,我将不胜感激。

【问题讨论】:

    标签: javascript paypal


    【解决方案1】:

    这是对我的问题的部分回答:我曾尝试使用键“redirect_uri”而不是“returnurl”,因为我曾在其他人的某处看到它。事实证明“returnurl”是正确的。

    <div id="proceed-to-confirmation-page-link" class="text-right">
        <span id="lippButton"></span>
    </div>
    
    <script src='https://www.paypalobjects.com/js/external/api.js'></script>
    <script>
        paypal.use(['login'], function (login) {
            login.render({
                "appid": "<MY APP ID>",
                "authend": "sandbox",
                "scopes": "openid profile address",
                "containerid": "lippButton",
                "locale": "en-us",
                "text": "Login to PayPal to order",
                "redirect_uri": "<MyRedirectURI>"
            });
        });
    </script>
    

    但是,我仍然不知道 PayPal 如何返回确认用户已登录的授权码。我在会话中看不到任何内容。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。 您可能使用了错误的应用程序 ID。在https://api.sandbox.paypal.com/v1/oauth2/token 上发帖返回:

      {
          "scope": "scopes",
          "nonce": "something",
          "access_token": "something",
          "token_type": "Bearer",
          "app_id": "some id",
          "expires_in": 32400
      }
      

      这不是你想要的appid。使用开发者仪表板中的客户端 ID

      【讨论】:

        【解决方案3】:

        您好,下面的代码对我有用!

                <span id='lippButton'></span>
                <script src='https://www.paypalobjects.com/js/external/api.js'></script>
                <script>
                    paypal.use( ['login'], function (login) {
                        login.render ({
                            "appid":"<MY APP ID>",
                            "authend": "sandbox",
                            "scopes":"openid",
                            "containerid":"lippButton",
                            "responseType":"code",
                            "locale":"en-us",
                            "buttonType":"LWP",
                            "buttonShape":"pill",
                            "buttonSize":"lg",
                            "fullPage":"true",
                            "returnurl":"http://127.0.0.1/CyFlying/public/"
                        });
                    });
                </script>
        

        【讨论】:

          猜你喜欢
          • 2018-05-06
          • 2021-04-14
          • 2017-02-09
          • 2016-06-07
          • 2013-02-27
          • 1970-01-01
          • 2011-10-26
          • 2014-02-23
          相关资源
          最近更新 更多