Bigcommerce - 如何申请授权码/访问令牌

时间:2015-04-21 20:31:37

标签: oauth-2.0 bigcommerce

在我的应用程序中,用户在安装应用程序时,需要填写注册表单。我需要将access_token与用户实例一起保存。

因此,如果用户未注册,我会重定向到注册表单,即。我不保存access_token,但此时,应用程序已注册。这意味着,假设当商店管理员重新登录应用程序时,他没有再次获得授权代码,而是获得了signed_pa​​yload。

因为,我不想在我的数据库上存储未注册的用户,我更喜欢调用api,这会授予我auth代码和/或access_token。

我可以打电话吗?

2 个答案:

答案 0 :(得分:1)

由于您没有指定编程语言,我将在Python中说明一个。

您提到了两个部分,注册/访问令牌和签名的有效负载。

初始回调流程看起来像这样:

@app.route('/bigcommerce/callback')
def auth_callback():
    # Put together params for token request
    code = flask.request.args['code']
    context = flask.request.args['context']
    scope = flask.request.args['scope']
    store_hash = context.split('/')[1]
    redirect = app.config['APP_URL'] + flask.url_for('auth_callback')

    # Fetch a permanent oauth token. This will throw an exception on error,
    # which will get caught by our error handler above.
    client = BigcommerceApi(client_id=client_id(), store_hash=store_hash)
    token = client.oauth_fetch_token(client_secret(), code, context, scope, redirect)
    bc_user_id = token['user']['id']
    email = token['user']['email']
    access_token = token['access_token']

使用签名有效负载的流程如下所示:

@app.route('/bigcommerce/load')
def load():
    # Decode and verify payload
    payload = flask.request.args['signed_payload']
    user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret())
    if user_data is False:
        return "Payload verification failed!", 401

    bc_user_id = user_data['user']['id']
    email = user_data['user']['email']
    store_hash = user_data['store_hash']

最初在数据库中创建用户时,您还可以通过代码功能表示注册日期,然后定期执行cron作业以检查他们是否拥有您的注册帐户。没有端点我们存储他们是否完成了您的注册,因为这是您的应用程序的功能。

答案 1 :(得分:0)

要回答您的问题,只有在用户首次安装应用时,才能在初始应用安装时获取访问令牌。这是BigCommerce唯一一次发送获取访问令牌所需的信息。

因此,您的应用应始终在安装时保存access_token。获取并保存访问令牌后,应提示您的注册页面。如果由于某种原因用户安装了应用并且没有完成注册,那么您只需检查注册是否完成,如果不是,那么您应该在{{{{{ 1}}阶段作为显示主应用程序仪表板之前的要求。