LINE 项目总结
程序员文章站
2022-11-07 08:23:04
前段时间做了一个“国外的公众号”,为什么说是国外的公众号呢,因为他和微信的公众号有很多共通之处。当然了也有很多不同的地方,第一个要说的就是,我在打印信息的时候,使用的alert()弹窗,但是后台才发现,LINE中的弹窗中的内容是不能用逗号分隔的。请看下面的代码: 在LINE中就只能打印个1,然后后面 ......
前段时间做了一个“国外的公众号”,为什么说是国外的公众号呢,因为他和微信的公众号有很多共通之处。当然了也有很多不同的地方,第一个要说的就是,我在打印信息的时候,使用的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 中,以便以后确定操作人等。这里附上一个我自己做的流程图,方便以后查阅。