• 微信公众号开发(与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;
      }
  • 相关阅读:
    520了,用32做个简单的小程序
    我要偷偷的学Python,然后惊呆所有人(第十三天)
    Python关于import的实验(10) 利用__init__.py文件将变量和包下的模块作为包的属性
    爬虫实战 如何爬取B站视频评论?
    【爬虫】对新笔趣阁小说进行爬取,保存和下载
    年轻就该多尝试,教你20小时Get一项新技能
    基于visual c++之windows核心编程代码分析(66)实现Windows服务的远程控制
    基于visual c++之windows核心编程代码分析(59)实现网络简单代理编程
    Windows Azure Traffic Manager的新的管理API
    现实世界的Windows Azure:采访Aidmatrix的交付副总裁Michael Ross
  • 原文地址:https://www.cnblogs.com/xmyun/p/6401297.html
Copyright © 2020-2023  润新知