|
|
楼主 |
发表于 2015-3-18 05:10:52
|
显示全部楼层
微信PHP开发框架 LaneWeChat (1)
二、AccessToken授权。
1、类简介:除了被动相应用户之外,在主动给用户发送消息,用户组管理等高级操作,是需要AccessToken授权的,我们调用一个URL给微信服务器,微信服务器会返回给我们一个散列字符串,在高级操作的时候需要将此串以参数的形式发送。散列字符串10分钟内有效,过期需要重新获取,获取新的后之前的全部失效。
2、使用命名空间:use LaneWeChat\Core\AccessToken;
3、参数:无
4、获取AccessToken
AccessToken::getAccessToken(); 该调用会返回微信服务器散列后的AccessToken字符串。
5、温馨提示
如果暂且用不到此功能,请跳过。最后来看这里!
6、功能补充
有一个地方需要用户自行完善,根据介绍我们已经知道了,获取AccessToken只有10分钟的有效期,过期需要重新获取。因此,我们需要存储这个AccessToken。
由于大家的存储方式各不相同,有Mysql的,有Redis的,有MongoDB的,还有Session的。所以这里我讲存储和读取给留空了。
流程:AccessToken类,public方法只有一个,就是getAccessToken()。这个方法会调用一个私有方法_checkAccessToken()来检测AccessToken是否存在并且是否过期,如果不存在或过期,则调用私有方法_getAccessToken()
完善步骤:
1)、打开core/accesstoken.lib.php文件。
2)、私有方法_getAccessToken()的倒数第二行(return是倒数第一行),在这个地方,请讲变量$accessTokenJson存储起来,变量$accessTokenJson是一个字符串。
3)、私有方法_checkAccessToken()的第一行就是读取操作(有一行伪代码$accessToken = YourDatabase::get('access_token');),将刚才第二步的存储的东西给读出来,并且赋值给$accessToken。
4)、在第二步的存储,第三部的读取的时候,请不要修改数据,仅仅完善一个读和存的操作就可以了。
三、主动给用户发送消息。
1、类简介:用户输入文本、图片、语音、音乐、视频等消息,以及关注、取消关注,上报地理位置等事件后,服务器被动给出应答。
2、使用命名空间:use LaneWeChat\Core\ResponsePassive;
3、参数 $tousername = "你的公众号Id"; 在变量$require['tousername']中
$mediaId = "通过上传多媒体文件,得到的id。";
4、发送文本内容
ResponseInitiative::text($tousername, '文本消息内容');
5、发送图片
ResponseInitiative::image($tousername, $mediaId);
6、发送语音
ResponseInitiative::voice($tousername, $mediaId);
7、发送视频
ResponseInitiative::video($tousername, $mediaId, '视频描述', '视频标题');
8、发送地理位置
ResponseInitiative::music($tousername, '音乐标题', '音乐描述', '音乐链接', '高质量音乐链接,WIFI环境优先使用该链接播放音乐', '缩略图的媒体id,通过上传多媒体文件,得到的id');
9、发送图文消息
1)创建图文消息内容
$tuwenList = array();
$tuwenList[] = array('title'=>'标题1', 'description'=>'描述1', 'pic_url'=>'图片URL1', 'url'=>'点击跳转URL1');
$tuwenList[] = array('title'=>'标题2', 'description'=>'描述2', 'pic_url'=>'图片URL2', 'url'=>'点击跳转URL2');
2)构建图文消息格式
$itemList = array();
foreach($tuwenList as $tuwen){
$itemList[] = ResponseInitiative::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);
}
3)发送图文消息
ResponseInitiative::news($tousername, $itemList);
四、用户及用户组管理。
1、类简介:获取粉丝列表,创建\修改用户组,讲用户添加\移除到用户组。
2、使用命名空间:use LaneWeChat\Core\UserManage;
3、参数 $openId = '用户和微信公众号的唯一ID'; 在变量$require['openid']中
$mediaId = "通过上传多媒体文件,得到的id。";
$groupId = '分组ID'; 在添加新分组、获取分组列表的时候可以得到
4、分组管理 - 创建分组
UserManage::createGroup('分组名');
5、分组管理 - //获取分组列表
UserManage::getGroupList();
6、分组管理 - 查询用户所在分组
UserManage::getGroupByOpenId($openId);
7、分组管理 - 修改分组名
UserManage::editGroupName($groupId, '新的组名');
8、分组管理 - 移动用户分组
UserManage::editUserGroup($openId, $groupId);
9、用户管理 - 获取用户基本信息
UserManage::getUserInfo($openId);
10、用户管理 - 获取关注者列表
UserManage::getFansList($next_openId='');
11、用户管理 - 获取网络状态
UserManage::getNetworkState();
五、网页授权。
1、类简介:在网页中获取来访用户的数据。
2、使用命名空间:use LaneWeChat\Core\WeChatOAuth;
3、参数 $openId = '用户和微信公众号的唯一ID'; 在变量$require['openid']中
$mediaId = "通过上传多媒体文件,得到的id。";
$groupId = '分组ID'; 在添加新分组、获取分组列表的时候可以得到
4、获取CODE。
参数:$scope:snsapi_base不弹出授权页面,只能获得OpenId;snsapi_userinfo弹出授权页面,可以获得所有信息
参数:$redirect_uri:将会跳转到redirect_uri/?code=CODE&state=STATE 通过GET方式获取code和state。获取CODE时,发送请求和参数给微信服务器,微信服务器会处理后将跳转到本参数指定的URL页面
WeChatOAuth::getCode($redirect_uri, $state=1, $scope='snsapi_base');
5、通过code换取网页授权access_token(access_token网页版)。首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
参数:$code getCode()获取的code参数。$code = $_GET['code'];
WeChatOAuth::getAccessTokenAndOpenId($code);
六、多媒体上传下载
1、类简介:在网页中获取来访用户的数据。上传的多媒体文件有格式和大小限制,如下:
* 图片(image): 1M,支持JPG格式
* 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
* 视频(video):10MB,支持MP4格式
* 缩略图(thumb):64KB,支持JPG格式
* 媒体文件在后台保存时间为3天,即3天后media_id失效
2、使用命名空间:use LaneWeChat\Core\Media;
3、参数 $filename 上传的文件的绝对路径
$type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
$mediaId = "通过上传多媒体文件,得到的id。";
$groupId = '分组ID'; 在添加新分组、获取分组列表的时候可以得到
4、上传:上传后,微信服务器会返回一个mediaId。
Media::upload($filename, $type);
5、下载:根据mediaId下载一个多媒体文件。
Media::download($mediaId);
|
|