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

iam*_*ush 5 oauth-2.0 bigcommerce

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

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

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

我可以打电话吗?

Aly*_*yss 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']
Run Code Online (Sandbox Code Playgroud)

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

@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']
Run Code Online (Sandbox Code Playgroud)

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