账号绑定的几种方式
关联Facebook账号和您网站上的账号之后,就可以通过调用Bothub提供的API,指定用户在您网站上的账号,即可给该用户发送消息。 账号关联有两种方式:
- 当用户在Messenger内进行绑定时,可以借助Messenger内的登录按钮
- 当用户在浏览官网或者App时,可以借助m.me短链进行账号绑定
对账号绑定的一些说明:
- 一个Facebook账号只能和一个网站账号进行绑定
- 如果用户的Facebook账号已经和网站账号绑定过了,再次和另一个账号进行绑定的话,会解除此Facebook账号和之前官网账号的绑定关系,而改为和新的官网账号绑定
- 如果网站账号C已经和一个Facebook账号B绑定,Facebook账号A再试图和网站账号C绑定,是可以成功的。其结果是Facebook账号A和B都和网站账号C进行绑定。
- 以上说明对下面所有的绑定方式皆有效。
从Messenger内发起的账号绑定 - Messenger内的登录按钮
特性介绍
Account link功能可以允许用户在Messenger中,打开您提供的登陆网页,输入用户名和密码进行账号绑定,以便为用户提供更精准的服务,例如:
- 为用户提供订单的回执和发货提醒
- 用户在Messenger中下单之后,可以将订单纳入您的订单管理系统中
- 根据用户在您网站上的订购和浏览情况,客服可以在Messenger中和用户进行更有效的沟通
开发指南
要为自己的bot添加一个账号联结功能,步骤如下:
- 在后台添加一个橱窗卡片,选择下方的“+登录"的按钮,创建一个Log in按钮
2. 在Messenger中用户实际点击这个Login按钮时,会跳转到这个网址,并附带两个参数:
account_linking_token=ACCOUNT_LINKING_TOKEN
redirect_uri=CALLBACK_URL
您需要做一个网页(例子),以便让用户输入用户名和密码(或者使用任何联合登陆),这个界面可以是您网站的标准登陆页面,
3. 将判断结果告知facebook
- 若用户输入的用户名和密码验证通过生成一个验证码,格式为 用户名_用户种类_时间戳,并用base64_encode进行编码。
- 跳转用户页面至{redirect_uri}?authorization_code=验证码,绑定即成功
- 若用户输入的用户名和密码验证不通过,则直接跳转用户至redirect_uri
从网站或App发起的账号绑定
当用户已经在官网登录之后,只要将用户引导到Messenger内,就能够完成账号的绑定。这个引导我们目前支持用m.me短链和Send To Messenger按钮来完成。
通过m.me链接进行账号绑定
m.me链接可以作为一个需要Messenger场景的入口(例如客服系统的入口,将用户进入Messenger和Bot/客服进行聊天)。 网站/App的开发人员需要通过如下的方式构造一个账号绑定链接: https://m.me/{FACEBOOK_PAGE_ID}?ref={ENGAGEMENT_CHANNEL_ID},{ENCRYPTED_USER_INFO}
- FACEBOOK_PAGE_ID : FB主页的链接,形如 1307470745964714
- ENGAGEMENT_CHANNEL_ID : 从messenger.bothub.ai后台新建短链接来源后获取。形如engagement:1a0:0 获取方式如下图所示
- ENCRYPTED_USER_INFO : 由于此链接是暴露在网站上的,虽然和用户登录的账号相关,但万一不慎泄露也是有风险的。因此Bothub在此加了两重保障措施:首先是对账号进行加密,即使获取此链接也无法直接看出账号,另外设了1天的时效,链接生成后1天内如果没有使用,链接即失效,仅能起到普通短链接来源的效果,无法起到绑定效果。 构造方式:先构造一个字符串,形如 {USER_NAME},{Timestamp} ,其中USER_NAME为用户在网站或App上的用户名。如果不想在绑定时使用真实的用户名,也可对用户名进行加密处理,只要自己能识别就可以。Timestamp为10位的数字时间戳,形如1590000000。然后向Bothub要一个RSA密钥对,对此字符串进行加密。即构造完成。
当用户在手机上点击此链接时,如果安装了Messenger并且已经登录了的话,会跳转到Messenger里相应的Bot的对话页面。当用户点击了Get Started之后,绑定即完成。
通过Checkbox插件进行绑定
在页面上,我们需要放置checkbox插件,在用户加入购物车/订阅的同时,将用户在您网站上的账号传给 Bothub,以便后续通过API给用户发送订单回执和物流更新提醒。
将用户在您网站上的账号发送给 Bothub,这段代码放在
标签中<script src="https://assets.bothub.ai/bothub/sdk/configs/bothub-widgets-config-126.js"></script>
<script>
window.bhAsyncInit.push(function() {
window.BH.User.setCustomUserId('<这里填入用户账号>');
});
</script>
用户点击加车或订阅按钮时,向 Bothub 发送subscribe_to_order_updates事件。实际情况中,按钮可能有其他元素,不需要改动,添加如下onclick代码即可。
<button [按钮中可能有的其他内容] onclick="window.BH.Event.logEvent('subscribe_to_order_updates')">
</button>
如此,在用户勾选并加车/点击订阅后,Bothub 会将用户在你网站上的账号与Facebook提供的ref进行绑定,使得在此后的一段时间内,你可以通过API,指定向该用户发送消息发送消息请用如下的方式指定用户:
{
"recipient": {
"username": "<用户账号>"
}
}