首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

AngularJS进阶(十七)在AngularJS应用中实现微信认证授权遇到的坑

  • 23-11-14 10:02
  • 3824
  • 11980
blog.csdn.net

在AngularJS应用中集成微信认证授权遇到的坑

注:请点击此处进行充电!

前言      

      项目开发过程中,移动端新近增加了一个功能“微信授权登录”,由于自己不是负责移动端开发的,但最后他人负责的部分未达到预期效果。不能准确实现微信授权登录。最后还得靠自己做进一步的优化工作,谁让自己是负责人呢?原来负责人就是负责最后把所有的BUG解决掉。

      首先,熟悉一下微信授权部分的源代码,如下所示:

 

  1. /*-------------- 微信授权登陆 --------------*/
  2. // 扩展 API 加载完毕后触发“plusready"事件
  3. document.addEventListener("plusready", function() {
  4. // 扩展API加载完毕,现在可以正常调用扩展API
  5. plus.oauth.getServices(function(services) {
  6. // services.length可获取当前运行环境支持授权登录认证服务数目
  7. if (services.length > 0) {
  8. auths = services;
  9. } else {
  10. alert("当前运行环境不支持授权登录认证服务!");
  11. }
  12. }, function(e) {
  13. alert("获取分享服务列表失败:" + e.message + " - " + e.code);
  14. });
  15. }, false);
  16. // 微信授权登录操作
  17. $scope.authLogin = function(){
  18. for(var i = 0; i < auths.length; i++){
  19. console.log(auths[i].description);
  20. if(auths[i].description == "微信"){
  21. var s = auths[i];
  22. break;
  23. }
  24. }
  25. if (!s.authResult) {
  26. console.log("微信尚未授权");
  27. s.login(
  28. //登录认证成功
  29. function(e){
  30. console.log("微信登录认证成功!");
  31. var objuser = s.userInfo;
  32. var uname = objuser.nickname;
  33. console.log(objuser.nickname);
  34. localStorage.uid = uname;
  35. localStorage.logined = "2";
  36. $rootScope.userinfo = {
  37. 'logined': "2",
  38. 'username': uname
  39. };
  40. console.log(localStorage.logined);
  41. $scope.set_defaultaddr();
  42. //登录后查询订单
  43. $scope.getBillBadge();
  44. if (sessionStorage) {
  45. console.log(sessionStorage.getItem("hisURL"));
  46. if(sessionStorage.getItem("hisURL")=='/tab/med_search')
  47. $rootScope.familyBox();
  48. $location.path(sessionStorage.getItem("hisURL"));
  49. }
  50. },
  51. //登录认证失败
  52. function(e){
  53. alert( "登录认证失败!" );
  54. });
  55. }else{
  56. console.log("已经登录认证!");
  57. }

 

      授权认证步骤:获取授权登录认证服务——>授权登录认证服务

      手机之间在运行同一款软件时由于系统差异也是存在表现差异。如下图所示,上图为红米Android4.4.4版本上的测试结果,下图为魅族5.0.1版本上的测试结果。很明显下图手机不能实现定位功能。

      更明显的差异存在于授权部分,调用授权服务时返回的数组内容不同,从下图可明显看出微信与QQ在返回数组中的位置不同。

 

   

       参考文献:http://www.html5plus.org/doc/zh_cn/oauth.html

                       http://ask.dcloud.net.cn/article/192

平台支持:

Android - 2.2+ (不支持)

iOS - 5.0+ (不支持)

注:Js中判断两字符串是否相等,使用“==”判断。不能使用equals。

又出现了问题,在手机上调试一切正常,等到打包成APK就出现不能授权(提示登录认证失败)的问题。

alert( "登录认证失败!" + e.message+" - "+e.code);如下图所示:

 

还是直接在手机测试,出现下面的现象:

 

感觉处于一种死循环的状态,但自己也一时找不到可以修改的地方。

注:

      微信登录配置的参数必须要提交在线打包才能生效(真机调试的时候使用的是HBuilder基座的参数)

      折腾了一天,微信授权登录还是未能完成。,头痛....

      好吧,我输了。

第二天晚上

      继续昨天未完的问题。尝试根据返回的错误信息进行修正。

      通过查阅资料终于发现问题所在了。授权中配置的参数必须来自微信开放平台申请所得,而非公众平台。那么二者之间又存在什么样的区别呢?接下来继续讲解。

微信开放平台和公众平台的区别?

      简单来讲,微信公众平台是我们常见的公众号,包括订阅号、服务号和企业号,主要用于不具备太强技术开放能力,拥有一定运营能力的品牌、商户、媒体以及个人,作为一个自媒体平台或者服务窗口来用,是面向更广大的人群使用的。

      微信开放平台是一个开发者平台,针对的是有较强技术开发能力、能够研发同微信对接的应用开发者来使用的,面向的是技术公司和开发者,不是面向所有人都可以使用的。

      因此对于分不清二者区别的人来讲,用公众平台就对了,能用得上开放平台的人肯定都是对开放平台功能有一定了解的人群。

 

      那么,微信开放平台与公众平台注册所得信息通用吗?

      答案是NO!因为注册时就不允许使用同一邮箱注册。

 

注:本文转载自blog.csdn.net的No Silver Bullet的文章"http://blog.csdn.net/sunhuaqiang1/article/details/50188605"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top