一个微信公众号的外链网页,使用angular
做成了单页应用,目前碰到了 微信网页授权 和 调用 js sdk 的问题
据我所目前所知,调用了微信授权后,单页应用的入口 url 会长成这样(假定域名为:example.com
):
①http://example.com?code=aaabbb/#/home
或者(启用了html5 mode
) 长成这样:
②http://example.com/home?code=aaabbb
?code=aaabbb
, 是微信授权后重定向时填充的,有了这个才能进一步去获取用户信息,参见 微信开发文档 > 获取code
至此,还不会出现问题
由于Android微信客户端不支持pushState的H5新特性,url②废弃(亲测,确实不能通过验证),所以入口url是这样:
http://example.com?code=aaabbb/#/home
现在问题来了,如果没有?code=aaabbb
就能通过签名验证, 然后成功调用 js sdk,但实际情况是:如果需要授权?code=aaabbb
必然存在,签名验证必定失败。那么到底如何做到授权和调用sdk均可用???
我目前的想法和做法是:微信授权重定向到
http://example.com?code=aaabbb/#/home
后,拿到code,然后再location.href = http://example.com/#/home
。这样做是能拿到用户信息,并且成功调用sdk,但问题是每次进入应用,会刷新两次,这样用户体验极差,而且有强迫症的我也接受不了。
请教各位给个靠谱的方案
Halaman hadapan tulen tidak boleh dilaksanakan Anda hanya boleh mengkonfigurasi nama domain halaman panggil balik kebenaran ke pelayan hujung belakang, dan kemudian mengubah halanya dari hujung belakang
.Anda boleh menggunakan indexOf() untuk mendapatkan nilai kod
Dengan cara ini anda boleh mendapatkan nilai kod
Halaman hadapan tulen tidak boleh dilaksanakan Kebetulan baru-baru ini saya telah melakukan projek serupa, yang turut menggunakan angularjs dan melaksanakan program satu halaman melalui angular-route.js.
Panggil antara muka latar belakang melalui ajax dalam program halaman tunggal (index.html),
Jika berjaya, kembalikan: {status:true,...}
Jika tidak log masuk dan gagal, kembalikan: {status:falst,next: 'log masuk',errmsg :'Ralat'}
Ralat lain dikembalikan: {status:falst,next:'Next operation',errmsg:'Error'}
Jika status pulangan result.status==false, result.next=='login':
Beri kuasa untuk melompat ke wxlogin.php Selepas mengesahkan bahawa log masuk berjaya, selepas menetapkan SESI, lompat ke program satu halaman (index.html)
Atur cara akan terus memanggil antara muka , ia mengembalikan: {status:true ,...}
Poster asal berakhir dengan location.href=""?
Bagaimanakah perkara ini harus diselesaikan? Penulis akan menyiarkan jawapan untuk menyelesaikannya. Saya juga akan menggunakan Vue untuk membangunkan WeChat