【移动应用开发技术】微信公众号网页授权的示例分析_第1页
【移动应用开发技术】微信公众号网页授权的示例分析_第2页
【移动应用开发技术】微信公众号网页授权的示例分析_第3页
【移动应用开发技术】微信公众号网页授权的示例分析_第4页
【移动应用开发技术】微信公众号网页授权的示例分析_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】微信公众号网页授权的示例分析

这篇文章将为大家详细讲解有关微信公众号网页授权的示例分析,在下觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在这之前先给大家一个我自定义的请求接口的函数,在下面的示例代码中请求接口用的都是这个函数该函数的作用是,想接口发起请求,传递参数并返回接口返回的数据(这个里面的代码就不做多解释了,如果大家想要了解可以去看一下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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论