版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】微信公众号网页授权的示例分析
这篇文章将为大家详细讲解有关微信公众号网页授权的示例分析,在下觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在这之前先给大家一个我自定义的请求接口的函数,在下面的示例代码中请求接口用的都是这个函数该函数的作用是,想接口发起请求,传递参数并返回接口返回的数据(这个里面的代码就不做多解释了,如果大家想要了解可以去看一下phpcurl函数总结)//自定义请求接口函数,$data为空时发起get请求,$data有值时发情post请求
function
http_url($url,$data=null){
$ch
=
curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
if(!empty($data)){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
$res
=
curl_exec($ch);
if(curl_errno($ch)){
echo
"error:".curl_error($ch);
exit;
}
curl_close($ch);
return
$res;
}(文中所使用的接口为腾讯官方提供,大家可以参考一下微信公众平台的开发者文档)一、首先我们需要配置我们的公众号1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发-接口权限-网页服务-网页帐号-网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:,配置以后此域名下面的页面/music.html、/login.html都可以进行OAuth3.0鉴权。但、、无法进行OAuth3.0鉴权3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可二、用户同意授权,获取code接口地址:/connect/oauth3/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect(注意接口参数)function
Get_Code()
//获取code
{
//构造请求地址
$code_url
=
"/connect/oauth3/authorize?appid=微信公众号appid&redirect_uri=请求功后回调地址&response_type=code&scope=snsapi_userinfo&state=STATE
#wechat_redirect";
//跳转到请求地址,应为本省设置了回调地址,所以不需要使用file_get_content()来请求接口。
header("location:"
.
$code_url);
exit;
}三、通个获取到的code来或缺access_token和openid接口:/sns/oauth3/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code/**
*
通过获取到的code来获取access_token和openid
*
$code为获取到的code
*
接口的参数注意换成自己的,如appid和secret
*/
function
GetAccess_Token($code)
{
$get_access_token_url
=
"/sns/oauth3/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
$res
=
http_url($get_access_token_url);
return
json_decode($res,
true);
}四、判断access_token是否有效接口:/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID/**
*
检查access_token是否有效
*
*/
function
CkeckAccessToken($access_token,
$openid)
{
$check_url
=
"/sns/auth?access_token=$access_token&openid=$openid";
$res
=
http_url($check_url);
$result
=
json_decode($res,
true);
if
(isset($result['errmsg'])
&&
$result['errmsg']
==
1)
{
return
1;
//access_token有效
}
else
{
return
0;
//access_token无效
}
}五、如果失效,刷新access_token接口:/sns/oauth3/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN/**
*
如果获取到的access_token无效,通过refresh_token来刷新access_token
*接口的参数注意换成自己的
*/
function
GetRefresh_Token($refresh_token)
{
$get_refresh_token_url
=
"/sns/oauth3/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
$res
=
http_url($get_refresh_token_url);
return
json_decode($res,
true);
}六、获取用户信息接口:/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN/**
*
获取用户基本信息
*
*/
function
Get_User_Info($access_token,
$openid){
$get_user_info
=
"/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$res
=
http_url($get_user_info);
return
json_decode($res,
true);
}获取到用户信息数据:{
"openid":"
OPENID",
"
nickname":
NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl":
"/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[
"PRIVILEGE1"
"PRIVILEGE2"
],
"unionid":
"o6_bmasdasdsad6_2sgVt7hMZOPfL"
}下面上完整代码:<?php
//跳转第三方页面,获取用户基本信息
//
这是请求页面也是code的回调页面
session_start();
//启动session
if
(isset($_GET['code']))
{
//判断是否有code传过来,如果没有调用函数请求code
$res
=
GetAccess_Token($_GET['code']);
//使用code获取access_token和openid
if
(CkeckAccessToken($res['access_token'],
$res['openid'])
==
0)
{
//判断access_token是否有效,如果无效获取新的access_token
$res
=
GetRefresh_Token($res['refresh_token']);
//或缺新的access_token
}
$userinfo
=
Get_User_Info($res['access_token'],
$res['openid']);
//获取用户信息
$_SESSION['userinfo']
=
$userinfo;
//将用户信息存入session中
$next_url
=
'http://web/index.php';
//下一个页面地址
header("location:"
.
$next_url);
//获取到信息后跳转到其他页面
exit;
}
else
{
//获取code
Get_Code();
}
function
Get_Code()
//获取code{
$code_url
=
"/connect/oauth3/authorize?appid=appid&redirect_uri=回调地址&response_type=code&scope=snsapi_userinfo&state=STATE
#wechat_redirect";
header("location:"
.
$code_url);
exit;
}
/**
*
通过获取到的code来获取access_token和openid
*
*/
function
GetAccess_Token($code){
$get_access_token_url
=
"/sns/oauth3/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
$res
=
http_url($get_access_token_url);
return
json_decode($res,
true);
}
/**
*
检查access_token是否有效
*
*/
function
CkeckAccessToken($access_token,
$openid){
$check_url
=
"/sns/auth?access_token=$access_token&openid=$openid";
$res
=
http_url($check_url);
$result
=
json_decode($res,
true);
if
(isset($result['errmsg'])
&&
$result['errmsg']
==
1)
{
return
1;
//access_token有效
}
else
{
return
0;
//access_token无效
}
}
/**
*
如果获取到的access_token无效,通过refresh_token来刷新access_token
*/
function
GetRefresh_Token($refresh_token){
$get_refresh_token_url
=
"/sns/oauth3/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
$res
=
http_url($get_refresh_token_url);
return
json_decode($res,
true);
}
/**
*
获取用户基本信息
*
*/
function
Get_User_Info($access_token,
$openid){
$get_user_info
=
"/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$res
=
http_url($get_user_info);
return
json_decode($res,
true);}
//自定义请求接口函数,$data为空时发起get请求,$data有值时发起post请
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单轨吊培训考试题及答案
- 2011年专利代理人考试真题(专利法试题及答案)资料
- 深度解析(2026)《GBT 35766-2017地图导航定位产品通 用规范》
- 深度解析(2026)《GBT 35803-2018化妆品中禁用物质尿刊酸及其乙酯的测定 高效液相色谱法》
- 深度解析(2026)《GBT 35741-2017工业阀门用不锈钢锻件技术条件》
- 《道路及桥梁工程BIM设计与施工应用规范》
- 药师执业试卷及详解
- 出纳个人工作计划
- 学校教育考试考前培训制度
- 心理测评量表题目及分析
- 2026海南省征信有限公司招聘备考题库(含答案详解)
- 2026重庆市荣昌区人力资源和社会保障局招聘1人笔试备考题库及答案详解
- 2026年城市协管员招聘综合知识(城管知识)题库及答案
- 地下车库及主楼地下室腻子施工方案
- ICU患者突发心律失常应急预案演练脚本
- 2026届广东省汕头市潮阳实验校中考数学全真模拟试卷含解析
- 2026届江苏省南京市、盐城市高三一模数学试题(含答案)
- (一模)2026年深圳市高三年级第一次调研考试语文试卷(含答案解析)
- 小贷公司管理规章制度
- 图书发行考核制度
- 物业管理法律讲座课件
评论
0/150
提交评论