• 微信公众号开发(与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;
      }
  • 相关阅读:
    简单说说Restful API
    事务的ACID特性
    WPF DataGrid与ListView性能对比与场景选择
    WPF MVVM实现INotifyPropertyChanged数据监听
    学习Promise异步编程
    CSS单位
    Mac Docker设置国内镜像加速器
    Mac下安装Redis,附可视化工具Medis
    预告 | XPocket开源产品发布会将于1月15日正式线上直播!
    CSDN资源免费下载
  • 原文地址:https://www.cnblogs.com/xmyun/p/6401297.html
走看看 - 开发者的网上家园