前段时间做了一个“国外的公众号”,为什么说是国外的公众号呢,因为他和微信的公众号有很多共通之处。当然了也有很多不同的地方,第一个要说的就是,我在打印信息的时候,使用的alert()弹窗,但是后台才发现,LINE中的弹窗中的内容是不能用逗号分隔的。请看下面的代码:
1 alert(1,2,3);
在LINE中就只能打印个1,然后后面的2,3是不能显示的,这个是最初做的时候很疑惑的东西。解决办法也是很简单,就是使用字符串拼接上就可以了。
然后是LINE的登录,这个就是为什么我说是国外的公众号的原因了,因为他的登录基本上和微信的登录是一样的。具体过程就是前端需要率先访问一个LINE的网址,访问这个网址的时候,需要带上我们参数,其中会有一个参数是回调地址url,访问LINE的地址,会按照那个参数跳回来,然后在url后面添加上code参数。请看下面的代码:
1 /**
2 * line网页版登录,通讯验证给予oauth2.0
3 * @param client_id line后台配置的id,请联系相关人员索要 就是line当中的Channel ID 1601124***
4 * @param gameUrl 游戏地址,登录后会跳转到此地址并携带可使用一次的code
5 * state 是咱们自定义的参数
6 */
7 //client_id: string, gameUrl: string, state: string
8 function login(client_id,gameUrl,state) {
9 let url = encodeURIComponent(gameUrl);
10 //window.open('https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + url + '&state=' + state + '&scope=openid%20profile&nonce=gzmjtw2019');
11 window.location.href = 'https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + url + '&state=' + state + '&scope=openid%20profile&nonce=gzmjtw2019';
12 }
11行就是那个LINE的网址,client_id是在创建这个应用的时候给的一个固定的id,然后gameurl就是跳回来的网址,需要说明的一点是,这个需要进行encodeURI。
第二点需要注意的是,我们会需要一个uerid,我们是这样获取的。
首先是引入line的sdk
1 <script src="https://d.line-scdn.net/liff/1.0/sdk.js"></script>
然后在js中需要一下的代码:
1 function initApp(data){
2 line_userId = data.context.userId;//"U3164697f9daea7dcc5c69fde8bf4a***";
3
4 }
5 window.onload=function(){
6 liff.init(data=>{
7 initApp(data);
8 });
9 }
这样就能获取到这个用户在这个应用下的唯一ID了。
然后有了上面的code和用户的唯一ID传给后台,后台就能获取到很多信息了。具体内容就需要根据业务需求来确定了,我们的业务是确定登录人在我们系统中的身份。然后继续进行下一步的操作,然后这个uerid我会保存到sessionStorage 中,以便以后确定操作人等。这里附上一个我自己做的流程图,方便以后查阅。