微信学习笔记之二(微信jssdk获取配置权限流程)

前期准备:

a. 自己的电脑绑定独立的域名

b. 成功申请微信管理测试账号

c. 本引导采用的是php的CI框架

1.绑定域名

这一步 在笔记一 中已经解决,正式公众号的绑定很简单请访问官方文档

这里不再赘述。

2.获取 config相关的配置信息

(1) 获取token(失效时间 7200秒)

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

获取结果示例:

{"access_token":"ACCESS_TOKEN","expires_in":7200};

请求:

注意如果是本地映射外网的服务器,需要绕过https的证书认证

正式服务器环境可以省略这一步

$this->curl->options(array(CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false));//绕过证书认证 正式服务器可省略
   $res =  $this->curl->simple_get($url); //发送get 请求 并返回请求结果
   $token = json_decode($res);
   $token = $token->access_token; //到这里就完成了第一步的请求

第一种方式缓存:memcache

<?php
    $mmc=memcache_init();//初始化缓存
    $token=memcache_get($mmc,"token");//获取Token
    if(empty($token))//判断是否为空,如为空则重新获取Token
    {
        $appid="wx7ced2a8593275753";
        $secret="71f475563d00103a356943875e96d43a";
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
	/*
        $ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,$url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$a = curl_exec($ch);
	*/
        //将上面的CI的获取代码段放在这里
	$strjson=json_decode($a);
	$access_token = $strjson->access_token;
	memcache_set($mmc,"token",$access_token,0,7200);//过期时间为7200秒
	$token=memcache_get($mmc,"token");//获取Token
      }
   ?>

第二种方式缓存:文件缓存

<?php
      //这种方式要平凡操作文件IO 也有它的弊端 只写操作思路伪代码
      //我们以 "时间戳 ## access_token" 格式进行存储
      $current_time = time();
      $info = file_get_contents("文件路径");
      $access_token = '';
      if(trim($info) == ''){
              //重新获取token代码 将CI获取的代码段放在这里
	      //获取到后将新的时间戳 和 对应的 access_token 存入
	      $access_token = 赋值;
      }else{
          $access_info = explode('##',$info);
	  $time = $access_info[0];
          if($current_time > $time + 7200 || trim($access_info[1]) == ''){
	      //重新获取token代码 将CI获取的代码段放在这里
	      //获取到后将新的时间戳 和 对应的 access_token 存入
	      $access_token = 赋值;
	  }else{
	      $access_token = 赋值;
	  }
      }

   ?>

第三种方式缓存:数据库缓存

这种方式要频繁查询数据库,原理与上面的文件缓存一致,不在赘述

(2) 获取完成后 提取 ticket

(获取及缓存方式 同上)

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

{

"errcode":0,

"errmsg":"ok",

"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-

41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

"expires_in":7200

}

(3) 生成 signature

参数如下:

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-

HhTdfl2fzFy1AOcHKP7qg

noncestr=Wm3WZYTPz0wzccnW   //自己生成的16位随机字符串

timestamp=1414587457        //第一次请求时的时间戳

url=http:sjgf.nat123.net    //当前url 主域名必须与你绑定的安全js域名一致

    $string1 ="jsapi_ticket={$ticket}&noncestr={$noncestr}×tamp={$timestamp}&url={$current_url}";
    //signature的获取
    $signature=sha1($string1)。

(4) 验证config 微信

appId: ‘‘, // 必填,公众号的唯一标识

timestamp: , // 必填,生成签名的时间戳

nonceStr: ‘‘, // 必填,生成签名的随机串

signature: ‘‘,// 必填,签名

详情请见:官方jssdk 说明文档

时间: 2024-12-23 04:12:32

微信学习笔记之二(微信jssdk获取配置权限流程)的相关文章

反射 学习笔记(二) 动态获取外部程序集中的类类型及成员类型

之前熟悉了反射相关的基本概念,知道了如何获取Assembly类和Type类,接下来通过一个小程序来练习.体验通过反射动态获取给定的*.dll或*.exe程序集所包含的所有类型的列表(列表包括给定类型定义的方法.字段.属性.事件.支持的接口.方法参数.基类.命名空间等).目标:使用Winform写一个小工具,可以查看指定dll的元数据. 界面如下: 使用的控件包括:按钮.OpenFileDialog对话框.ComboBox(DropDownList类型).TextBox(MultiLine为tru

MongoDB学习笔记(二:入门环境配置及与关系型数据库区别总结)

一.下载及安装MongoDB MongoDB下载官网链接:http://www.mongodb.org/downloads 具体安装步骤教程:http://www.shouce.ren/api/view/a/6191(PS:该链接中对MongoDB安装讲解比较详细,通俗易懂.安装教程链接是我从手册网上找到的,下面的总结知识点也是本人从中学习后归纳的一部分,有兴趣的同学不妨收藏一下~) 二.MongoDB可视化工具下载 个人比较习惯在图形化界面进行相关命令操作,所以在安装完MongoDB后,就顺便

Tcc学习笔记(二) 安装和配置

1.下载和编译 去repo.or.cz/tinycc.git下载最新的snapshot压缩包, 或者用git命令下载: git clone git://repo.or.cz/tinycc.git . Linux下在路径下输入: ./configure & make & make install . Windows下先进入win32目录,使用vs2015或使用build-tcc.bat结合GCC[推荐环境为MSYS2]. 编译完成后的得到tcc的可执行文件.Windows下为tcc.exe以

cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架

一.游戏的基本框架: WelcomeScene    ——>    GameScene   ——>   GameOverScene ||                                       ||                                    || ∨                                      ∨                                   ∨ WelcomeLayer            

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

AVOS Cloud 学习笔记(二) 功能总结(What it can do?)

AVOS Cloud 学习笔记(一)   功能总结(What it can do?) 第一章.对象存储 对象新建.保存.更新.删除和检索 1 //创建新对象,根据类名 2 AVObject *gameScore = [AVObject objectWithClassName:@"GameScore"]; 3 [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"]; 4 [gameScor

菜鸟的jQuery源码学习笔记(二)

jQuery对象是使用构造函数和原型模式相结合的方式创建的.现在来看看jQuery的原型对象jQuery.prototype: 1 jQuery.fn = jQuery.prototype = { 2 //成员变量和方法 3 } 这里给原型对象起了一个别名叫做jQuery.fn.要注意的是这个jQuery.fn可不是jQuery对象的属性,而是jQuery构造方法本身的属性,它是不会传给它所创建的对象的.如果你在控制台敲$().fn的话输出的结果会是undefined.接下来看看原型对象里面有些

《JavaScript权威指南》学习笔记之二十---XMLHttpRequest和AJAX解决方案

一.AJAX概述 AJAX是Asynchronous JavaScript and XML的缩写,中文译作异步JavaScript和XML.AJAX 不是新的编程语言,而是一种使用现有标准的新方法,在不重新加载页面的情况下,与服务器交换数据并更新部分网页的艺术.其核心是:客户端的Javascript能够与web服务器进行异步数据交换. 二.AJAX基础---XMLHttpRequest对象 所有现代浏览器(IE7+.Firefox.Chrome.Safari 以及 Opera)均内建 XMLHt

【我的Oracle学习笔记(二)】----- select语句补充

一.多表查询 多表查询是指从多个有关联的表中查询数据,其语法与单表查询类似.一般来说,多表查询的表要用连接联系起来,如果没连接,则查询结果是这多个查询表的笛卡尔积(注释1). 模拟查询雇员姓名和所在部门名称: select [雇员姓名],[部门名称] from [雇员表] a,scott,[部门表] b where a.[部门编号]=b.[部门编号]; 上例中,为每一个查询表指定了别名,便于SQL语句的书写. 模拟查询在”sales“部门工作的雇员其雇员姓名 select [雇员姓名] from