在 Square Connect 中启用 OAuth 支持
Enabling OAuth support in Square Connect
我有一个应用程序目前使用我的访问令牌集成到我的商家帐户中。与附近商家的早期讨论表明了一些积极的兴趣。我想集成 OAuth 支持,以便我可以尝试吸引那些商家。
虽然 https://docs.connect.squareup.com/api/connect/v1/#navsection-oauth 有信息,但我需要一些额外的说明。
(i) 有一个答案 "By default the OAuth flow is disabled for applications which is why you are seeing the "不允许授权“失败。如果您希望为您的应用程序启用 OAuth 流程,那么您需要联系 Square。” @SquareConnectSupport:我已经给 Developer@Square 发了邮件,请告诉我我还做了什么。
(ii) 这是我认为它的工作方式 - OAuth 集成(请确认)
- 浏览器中的用户类型说 "mysnow.com/square"
- "mysnow.com/square" 处的处理程序允许用户输入一个 ID,此 ID 是 mysnow 的本地 ID
- 然后 "mysnow.com/square" 的处理程序将商家引导至 https://connect.squareup.com/oauth2/authorize 以及我的应用程序 ID、权限和重定向 url。
- 处理程序随后会在先前提供的重定向 URL 处收到带有 AuthZ 代码的通知代码。
- 接下来处理程序获取访问令牌(使用 AuthZ 代码)
- 最后,处理程序将 ID、AuthZ 代码、相关的访问令牌和 date/time 标记(当获得令牌时)作为元组保存在安全的数据存储中。
(iii) 使用访问令牌
当需要访问给定ID的商户数据时,使用该ID获取Access Token。使用此访问令牌管理允许的数据(基于权限)
定期更新访问令牌。
(iv) 出于测试目的,我创建了几个 test/dummy 商户?或者你们有我可以用于测试的虚拟商户帐户。
您最多可以通过 OAuth 流程授权十个商家而无需 Square 的批准,这应该足以让您的集成 运行 和测试。如果您想使其更广泛地可用,您将需要联系 Square 以在 Square App Marketplace 中获取该应用程序。
看起来基本上是正确的。 OAuth 的最佳实践是这样的:
- 商家访问您的着陆页(例如 mysnow。com/square)并点击一个操作以开始使用您的 Square 集成。
- 商家的浏览器被重定向到 OAuth 页面 (
https://squareup.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=LIST_OF_OAUTH_SCOPES_YOU_NEED
)
- 商家授权您的应用程序访问他们的数据,并被重定向回您的网站。在URL是授权码
- 您的后端向 Square 发出 API 调用,以将授权代码交换为访问令牌。然后它使用该访问令牌来查找有关商家的信息并预填充您的注册表单的字段(例如,您可以获得姓名、电子邮件等)
- 如果您的网站上有部分填充的注册表单,系统会提示商家完成他们对您的服务的注册。
确实没有办法创建 "dummy" 个商家,但您可以使用相同的身份信息注册多个商家帐户,只要您为每个帐户使用不同的电子邮件即可。如果你有 GMail,你可以做 "you+someword@gmail.com",邮件将被重定向到 "you@gmail.com",所以你不需要创建一堆电子邮件帐户来拥有唯一的电子邮件地址。
我有一个应用程序目前使用我的访问令牌集成到我的商家帐户中。与附近商家的早期讨论表明了一些积极的兴趣。我想集成 OAuth 支持,以便我可以尝试吸引那些商家。
虽然 https://docs.connect.squareup.com/api/connect/v1/#navsection-oauth 有信息,但我需要一些额外的说明。
(i) 有一个答案 "By default the OAuth flow is disabled for applications which is why you are seeing the "不允许授权“失败。如果您希望为您的应用程序启用 OAuth 流程,那么您需要联系 Square。” @SquareConnectSupport:我已经给 Developer@Square 发了邮件,请告诉我我还做了什么。
(ii) 这是我认为它的工作方式 - OAuth 集成(请确认)
- 浏览器中的用户类型说 "mysnow.com/square"
- "mysnow.com/square" 处的处理程序允许用户输入一个 ID,此 ID 是 mysnow 的本地 ID
- 然后 "mysnow.com/square" 的处理程序将商家引导至 https://connect.squareup.com/oauth2/authorize 以及我的应用程序 ID、权限和重定向 url。
- 处理程序随后会在先前提供的重定向 URL 处收到带有 AuthZ 代码的通知代码。
- 接下来处理程序获取访问令牌(使用 AuthZ 代码)
- 最后,处理程序将 ID、AuthZ 代码、相关的访问令牌和 date/time 标记(当获得令牌时)作为元组保存在安全的数据存储中。
(iii) 使用访问令牌
当需要访问给定ID的商户数据时,使用该ID获取Access Token。使用此访问令牌管理允许的数据(基于权限)
定期更新访问令牌。
(iv) 出于测试目的,我创建了几个 test/dummy 商户?或者你们有我可以用于测试的虚拟商户帐户。
您最多可以通过 OAuth 流程授权十个商家而无需 Square 的批准,这应该足以让您的集成 运行 和测试。如果您想使其更广泛地可用,您将需要联系 Square 以在 Square App Marketplace 中获取该应用程序。
看起来基本上是正确的。 OAuth 的最佳实践是这样的:
- 商家访问您的着陆页(例如 mysnow。com/square)并点击一个操作以开始使用您的 Square 集成。
- 商家的浏览器被重定向到 OAuth 页面 (
https://squareup.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=LIST_OF_OAUTH_SCOPES_YOU_NEED
) - 商家授权您的应用程序访问他们的数据,并被重定向回您的网站。在URL是授权码
- 您的后端向 Square 发出 API 调用,以将授权代码交换为访问令牌。然后它使用该访问令牌来查找有关商家的信息并预填充您的注册表单的字段(例如,您可以获得姓名、电子邮件等)
- 如果您的网站上有部分填充的注册表单,系统会提示商家完成他们对您的服务的注册。
确实没有办法创建 "dummy" 个商家,但您可以使用相同的身份信息注册多个商家帐户,只要您为每个帐户使用不同的电子邮件即可。如果你有 GMail,你可以做 "you+someword@gmail.com",邮件将被重定向到 "you@gmail.com",所以你不需要创建一堆电子邮件帐户来拥有唯一的电子邮件地址。