【问题标题】:Can BigCommerce Private Apps use OAuthBigCommerce 私有应用程序可以使用 OAuth
【发布时间】:2015-11-13 03:57:43
【问题描述】:

我对他们 API 上的 BC 文档感到非常困惑,因为他们允许您创建“草稿应用程序”(私有应用程序),现在我看到他们的文档中说“我们目前不提供保留 OAuth 应用程序的方法私人的。”。

我担心的是,他们最近做了一些更改,这可能会影响我一个月前运行良好的一些私人应用程序。如果有人能提供一些见解,我将不胜感激!

https://developer.bigcommerce.com/api/guides/oauth-transition

【问题讨论】:

  • 您现在是否发现当前的 oAuth 应用存在问题?
  • @dulesage - 您可以通过什么方式结帐并可能批准我的回答?
  • 为了这个问题,即使是很久以前......阻止我的私人应用程序运行的事情(从 BC API 获取数据)是托管我的代码的服务器对于将 BC IP 地址列入黑名单的应用程序,我花了数周时间才发现这一点! :S
  • 哎呀!无论如何,我很欣赏这个问题。给了我一个很好的论坛来获取一些关于不清楚的过程的信息;)

标签: oauth bigcommerce


【解决方案1】:

仅出于访问商店 API 的目的而使用“草稿应用程序”创建 oAuth 凭据没有任何问题。在这种情况下,您不必发布您的应用程序,并且您的应用程序永远不会被“公开”。您也不必费心“加载回调 URL”并在您的草稿应用上填写详细信息,除非您想在商店中为自己提供一个界面。

“应用程序草稿”功能专门用于允许开发人员为 BC 应用市场构建应用程序,以便在提交之前在商店中测试他们的应用程序。但是,您可以使用它来制作仅适用于您的商店的私有应用程序 - 我在此处包括其他人的流程!

使用 oAuth 制作私有应用程序(或如何为商店生成 oAuth 凭据)

你需要什么
  • 访问列为您要安装应用的商店的“店主”的帐户或让有权访问的人完成几个步骤的能力
  • 能够设置本地或公共 URL 以接收“身份验证回调请求”

开始

您应该做的第一件事是整理出一个可以接收“Auth Callback”请求的本地或公共 URL。此资源必须能够通过 HTTPS 连接工作,但 SSL 可以是自签名的。 Bigcommerce 的“身份验证回调”请求是一个 GET 请求,该请求将在 URL 上包含 3 个查询参数:代码、范围和上下文。

这里有更详细的描述: https://developer.bigcommerce.com/api/callback#get-req

其他信息

在构建公共应用程序时,重要的是配置接收 Auth 回调请求的服务以捕获 3 个查询值并将它们与您已有的信息相结合。然后,您将在 POST 中将所有这些信息发送到 BC oAuth 令牌服务,以便为商店生成您的 API 令牌。除此之外,您还希望使用 200 状态和用户界面或说明来响应 Auth Callback 请求。

在构建私有应用程序的情况下,您无需担心任何这些。您需要做的就是捕获查询值。如果你已经有了这个,那么继续并跳到下面关于生成 API 令牌的部分。

在继续之前

您应该有一个可以接收 GET 请求并捕获查询参数的 URL 路径。测试它并确保它有效。以下是几个示例 URL:
https://example.com/auth-callback
https://localhost:8000/auth-service

注册应用

这里的重点是应用程序的注册必须由您要安装应用程序的商店的店主帐户完成。如果您有权访问店主帐户凭据,请按照本页底部的步骤操作:
https://developer.bigcommerce.com/api/registration

如果您正在与店主合作,那么您可以指导他们完成上述步骤。您需要向他们提供您为完成步骤 9 而创建的 Auth 回调 URL加载回调 URL 必须填写,但提供的默认示例可以保留。

范围

注册应用时,您可以选择应用的范围。将它们全部打开很简单,但最佳做法是仅启用您需要的范围。以下是范围列表:
https://developer.bigcommerce.com/api/scopes

如果您不确定是否需要某个范围,请保持启用状态,因为如果您必须更改应用程序的范围,则必须重新生成 API 令牌(执行重新安装应用程序)。

在继续之前

您需要有 client_idclient_secret。如果其他人注册了该应用程序,那么您需要向他们询问。有一个查看客户端ID按钮,注册应用后会提供它。

生成身份验证回调请求

在此步骤中,您将再次需要具有店主访问权限的人员。他们需要登录他们的商店并转到左侧栏中的应用程序部分。之后点击 Marketplace -> 然后点击 My Apps(在右上角)-> 然后点击 My Draft Apps

您现在应该会看到一个列表,其中包含店主已注册的所有“应用程序”。选择与您计划使用的 client_id 相关的一个。点击安装应用程序。

现在已经发送了 Auth Callback 请求,您到此就完成了。除非您使用内容响应 Auth Callback 请求,否则您应该会看到一个空白或灰色页面。您的应用现在正在等待身份验证。

如果使用自签名证书

如果您的身份验证回调 URL 具有自签名证书,那么当您尝试安装应用程序时,您将在浏览器中看到“不受信任的证书”错误。您应该选择信任证书并继续。

在继续之前

您现在应该已经在您的 Auth Callback URL 中收到了 codescopecontext。如果您不这样做,可能是因为您的服务器上没有 SSL/TLS。您可以通过取消安装在您启动应用程序的同一位置多次重放 Auth Callback 请求。您甚至可以打开一个开发工具并观察请求发生的情况,以查看控制台中显示的错误。如果这仍然失败,那么您应该联系 Bigcommerce 支持或在此处提出新问题!

生成 API 令牌以完成安装

按照此处的步骤操作: https://developer.bigcommerce.com/api/callback#post-req

您应该拥有向 BC Auth Token Service 发送 POST 请求所需的所有详细信息,地址为 https://login.bigcommerce.com/oauth2/token

确保对您的内容进行 URL 编码,您应该会很好!这是一个可以为您进行 URL 编码和解码的站点:http://meyerweb.com/eric/tools/dencoder/
请注意编码 &= 符号时,它们实际上被用作字段之间或字段/值之间的分隔符(分别)。

在继续之前

您应该已经收到来自 Auth 服务的成功响应,其中包含您的 API 令牌。一旦你有了这个,你就可以访问商店的 API。您不再需要让您的身份验证回调 URL 可用并且可以取消它。

还要记下用于创建 API 路径的上下文

访问 API

现在您已经有了 API 令牌context,您就可以访问商店的 API。从对 /time 端点的简单请求开始。

发出 GET 请求并包含以下标头(减去花括号):

  • X-Auth-Client:{CLIENT_ID}
  • X-Auth-Token:{API_TOKEN}
  • 接受:应用程序/json
  • 内容类型:应用程序/json

将您的请求发送到(减去花括号)的 URL 路径:

https://api.bigcommerce.com/{context}/v2/time

如果你得到一个 200 响应,那么你就准备好了!

附加说明 - 破坏凭据的方法

为某个应用成功生成 API 令牌后,该应用将在控制面板中显示为 应用 部分的图标。该应用程序在那里的事实表明它已安装并允许访问。如果您卸载该应用,则之前生成的 API 令牌将停止工作。

更改已安装应用的范围将需要重新安装它以更正令牌。

在商店中更改店主电子邮件将导致令牌停止工作。 API 令牌专门与注册应用的商店所有者绑定。

【讨论】:

  • 我一步一步地跟着这一步,但获取请求只返回代码和范围我不知道我在这里做错了什么
  • @NaveedAhmad - 我见过的唯一方法是,如果您从链接开始安装过程,而不是登录商店并在“应用市场”中找到您的“草稿应用”。人们尝试为安装应用程序创建的 URL 如下所示:login.bigcommerce.com/oauth2/… 如果您使用的是链接,那么您就没有完全按照我的步骤操作。
  • @NaveedAhmad 请确认您是否正在执行“生成身份验证回调请求”部分第一段中描述的内容之外的其他操作。如果您完全按照该段落进行操作,那么我建议您在 Developer Portal 中注册一个新应用程序并尝试这样做,因为您的结果将是非典型的。
  • @J Z 感谢您的回答,我没有从使用草稿应用程序中的“安装”按钮的链接开始安装过程。问题不是从我的后端发送获取请求,而是使用 angularjs 进行。我知道这很疯狂,因为我们需要在发送 OK 状态之前发送一个 get 请求......但我弄清楚了流程,它现在就像一个魅力一样工作
  • @NaveedAhmad 太棒了!很高兴听到!听起来你在做一些超出我想象的事情:)
【解决方案2】:

如果您在“我的草稿应用程序”中有应用程序并且您使用了基本 oauth,则必须更改为 Oauth 身份验证,但如果只有私有应用程序使用“旧 api 帐户”,则无需更改。

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2014-01-11
    • 2017-12-06
    • 2010-10-14
    相关资源
    最近更新 更多