在我的应用程序中,用户在安装应用程序时,需要填写注册表单。我需要将access_token与用户实例一起保存。
因此,如果用户未注册,我会重定向到注册表单,即。我不保存access_token,但此时,应用程序已注册。这意味着,假设当商店管理员重新登录应用程序时,他没有再次获得授权代码,而是获得了signed_payload。
因为,我不想在我的数据库上存储未注册的用户,我更喜欢调用api,这会授予我auth代码和/或access_token。
我可以打电话吗?
答案 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}}阶段作为显示主应用程序仪表板之前的要求。