微信公众号开发(与angular框架相结合)

路由配置代码参考:
复制代码
  //首页
      .state('app.home', {
        url: '/home?code&testopenid',
        templateUrl: 'home/home.html',
        controller: 'HomeController as vm',
        resolve: {
          load: ['$ocLazyLoad', function($ocLazyLoad) {
            return $ocLazyLoad.load(['home/home']);
          }],
          goLogin: ['$stateParams','$state', '$wxService', '$stateParams','$modal',function ($stateParams,$state, $wxService,$stateParams,$modal) {
            return {
                query: function() {
                    var deferred = $q.defer(); 
                    if (typeof $stateParams.code === "string") {
                      $wxService.reLogin($stateParams.code, function(data) {
                        deferred.resolve(data);
                      });
                    } else if (typeof $stateParams.testopenid === "string") {
                      saveToLocalStorage('openid' + appVersion, $stateParams.testopenid);
                      $wxService.memberInfoQuery($stateParams.testopenid, function(data) {
                        deferred.resolve(data);
                      });
                    } else {
                      if (typeof localStorage['openid' + appVersion] === "string") {
                        $wxService.memberInfoQuery(localStorage['openid' + appVersion], function(data) {
                          deferred.resolve(data);
                        });
                      } else {
                        deferred.reject({"status":"40001"});
                      }
                    }
                    return deferred.promise; // 返回承诺,这里并不是最终数据,而是访问最终数据的API  
                  } // end query  
              }
          }]
        }
      })
复制代码

 

登录验证流程代码参考:
复制代码
 $wxService.$inject = ['$http', '$window'];

  function $wxService($http, $window) {
    var $service = {
      $$payload: null,
      reLogin: function(_code, callback) {
        for(var key in window.localStorage){ //清除老版本所有localStorage数据
          if(key.indexOf(appVersion) == -1){
            window.localStorage.removeItem(key);
          }
        }
        
        if (localMod) {
          loadLocalData();
          this.memberInfoQuery(localStorage['openid' + appVersion], callback);
          return;
        }
        var self = this;
        if (!localMod) {
          //未登录 尝试重新登陆一遍
          if (!localStorage['openid' + appVersion] || localStorage['openid' + appVersion]=="null") {
            this.ownerInfoQuery(_code, function(data) {
              if (data.openid) {
                saveToLocalStorage('openid' + appVersion, data.openid);
                self.memberInfoQuery(data.openid, callback);
              } else {
                callback(data.openid)
                return;
              }
            });
          } else {
            this.memberInfoQuery(localStorage['openid' + appVersion], callback);
          }
        }
      },
      ownerInfoQuery: function(_code, callback) { //第一次获取openId
        $http({
          url: serviceUrl+'/weixin/openid/query?code='+_code+"&token="+wxToken,
          method: 'get'
        }).success(function(d) {
          callback(d);
        }).error(function(data) {
          callback({
            status: 0,
            msg: JSON.stringify(data)
          })
        });
      },
      memberInfoQuery: function(wxid, callback) {
        callback = callback || function() {};
        $http({
          url: serviceUrl+'/fsServe/checkLogin?wxid='+wxid,
          method: 'get'
        }).success(function(data) {
          callback(data);
        }).error(function(data) {
          debugAlert(JSON.stringify(data));
        });
      }
    };
    return $service;
  }
复制代码

 

posted @   MiyaMiya  阅读(4123)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示