1. 程式人生 > >AngularJS進階 十七 在AngularJS應用中實現微信認證授權遇到的坑

AngularJS進階 十七 在AngularJS應用中實現微信認證授權遇到的坑

在AngularJS應用中整合微信認證授權遇到的坑

注:請點選此處進行充電!

前言      

      專案開發過程中,移動端新近增加了一個功能“微信授權登入”,由於自己不是負責移動端開發的,但最後他人負責的部分未達到預期效果。不能準確實現微信授權登入。最後還得靠自己做進一步的優化工作,誰讓自己是負責人呢?原來負責人就是負責最後把所有的BUG解決掉。

      首先,熟悉一下微信授權部分的原始碼,如下所示:

 

/*-------------- 微信授權登陸 --------------*/
// 擴充套件 API 載入完畢後觸發“plusready"事件 document.addEventListener("plusready", function() { // 擴充套件API載入完畢,現在可以正常呼叫擴充套件API plus.oauth.getServices(function(services) { // services.length可獲取當前執行環境支援授權登入認證服務數目 if (services.length > 0) { auths = services; } else { alert("當前執行環境不支援授權登入認證服務!"); } }, function(e) { alert("獲取分享服務列表失敗:"
+ e.message + " - " + e.code); }); }, false); // 微信授權登入操作 $scope.authLogin = function(){ for(var i = 0; i < auths.length; i++){ console.log(auths[i].description); if(auths[i].description == "微信"){ var s = auths[i]; break; } } if (!s.authResult) { console.log("微信尚未授權"); s.login( //登入認證成功 function(e)
{ console.log("微信登入認證成功!"); var objuser = s.userInfo; var uname = objuser.nickname; console.log(objuser.nickname); localStorage.uid = uname; localStorage.logined = "2"; $rootScope.userinfo = { 'logined': "2", 'username': uname }; console.log(localStorage.logined); $scope.set_defaultaddr(); //登入後查詢訂單 $scope.getBillBadge(); if (sessionStorage) { console.log(sessionStorage.getItem("hisURL")); if(sessionStorage.getItem("hisURL")=='/tab/med_search') $rootScope.familyBox(); $location.path(sessionStorage.getItem("hisURL")); } }, //登入認證失敗 function(e){ alert( "登入認證失敗!" ); }); }else{ console.log("已經登入認證!"); }

 

      授權認證步驟:獲取授權登入認證服務——>授權登入認證服務

      手機之間在運行同一款軟體時由於系統差異也是存在表現差異。如下圖所示,上圖為紅米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!因為註冊時就不允許使用同一郵箱註冊。


再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net