版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】微信公众号网页授权的示例分析
这篇文章将为大家详细讲解有关微信公众号网页授权的示例分析,在下觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在这之前先给大家一个我自定义的请求接口的函数,在下面的示例代码中请求接口用的都是这个函数该函数的作用是,想接口发起请求,传递参数并返回接口返回的数据(这个里面的代码就不做多解释了,如果大家想要了解可以去看一下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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古2026年军队文职《专业科目》考试试题及答案
- 2026年烟草专卖局公司招聘考试试题及参考答案
- 2026年山东农业专业技术职务资格考试(农学)综合试题及答案
- 2026年江西省上饶市烟草系统人员招聘笔试参考题库及答案解析
- 2026年价格鉴证师价格鉴证案例分析考试真题(完整版)
- 2026年干部竞聘面试题含答案
- 2026年成人高考专升本政治密训试题及答案
- 2026年共青团入团气度素养测试试题含答案
- 2025 零碳行动报告 远景
- 2026年成人高考政治综合自测试卷及答案
- 非法采矿案例课件
- 二氧化硅的气化温度
- 2025年高效节能变压器安装工程劳务合同范本
- 畜禽疫病防治技术课件
- 九上名著章节课件-《水浒传》第1回《张天师祈禳瘟疫 洪太尉误走妖魔》情节梳理+人物形象+巩固试题
- 各地市可编辑的山东地图
- 企业品牌形象的视觉识别系统设计
- 工地防洪防汛安全教育
- 出差管理制度及出差标准-确定
- DB36T-植保无人飞机施药作业防治柑橘病虫害技术规程
- 中国广电笔试试题及答案
评论
0/150
提交评论