微信公众号开发

微信公众号开发

路由配置代码参考:
  //首页
      .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;
  }