微信开发(2)OAuth2.0
来源:互联网 发布:mac 最近使用字体 编辑:程序博客网 时间:2024/05/16 01:06
微信开发(2)OAuth2.0
在微网站中,获取用户资料比如说用户的openID,需要使用到微信的OAuth2.0接口。
登录你的微信测试号,在“体验接口权限表”中,找到:
图片链接
点击“修改”按钮,进入“OAuth2.0网页授权:
图片链接
在“授权回调页面域名”中填写需要获取OAuth2.0接口的页面(或网站)的域名地址,比如:
xxx.sinaapp.com
需要填写完整域名(即包括二级域名xxx.sinaapp.com前面的xxx)。然后点击确认。
使用前面的create.php页面,添加一个测试OAuth2.0的网页URL菜单,菜单的JSON结构如下:
{"type":"view","name":"OAuth2网页授权", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx1234567890&redirect_uri= openid.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect"}
JSON数组中的url字段需要按一定格式构造。其中,appid参数为你的公众号的AppID,redirect_uri为需要授权的页面url,这里是http://xxx.sinaapp.com/oauth2/openid.php。注意,这个url中的域名需跟“授权回调页面域名”相一致。
注意,这里使用的scope是snsapi_base方式,只能获得用户的openid。
然后开始编写代码。在上述URL的服务器上新建一个openid.php文件,代码如下:
<?php// 使用方倍工作室的微信API接口require_once("../weixin.class.php");// 填写测试号(或公众号)的AppID$appid="wx1234567890";// 填写测试号(或公众号)的AppSecret$appsecret="abcdefghijklmnopqrst";// 当腾讯返回code之后,会将code传递给回调页面(即redirect_uri)。$code = $_GET["code"];// 实例化一个微信高级API接口对象,注意传入AppID和AppSecret$weixin = new class_weixin_adv($appid,$appsecret);// 调用getUserInfo方法,将code传入,以获取用户信息$userinfo = getUserInfo($code);// 将用户信息编码为字符串$jsonstr =json_encode($userinfo);// 将编码后的用户数据传到另一个页面$url="display.php?value=" . $jsonstr;// 跳转到另一个页面header("location:" . $url);// getUserInfo函数定义function getUserInfo($code){ // 从函数外部获取AppID、AppSecret和微信接口对象 $appid=$GLOBALS['appid']; $appsecret=$GLOBALS['appsecret']; $weixin=$GLOBALS['weixin']; //以code换openid,采用的是snsapi_base方式,这种方式只能获得openid $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code"; $access_token_json = $weixin->https_request($access_token_url); $access_token_array = json_decode($access_token_json, true); $openid = $access_token_array['openid']; // 获得openid后,再调用微信接口对象的get_user_info方法获取用户信息$userinfo_array=$weixin->get_user_info($openid); return $userinfo_array;}?>
再编写一个display.php,当openid.php跳转到display.php是会带上一个value参数,这个参数中包含了用户信息的JSON字串。
你可以中display.php中这样接收value参数:
<?php // 获取value字符串$value=$_GET["value"]; // 转成数组对象 $userinfo=json_decode($value, true);?>
然后,你可以用这个$userinfo干任何事情,比如显示用户的资料,保存到数据库,或者将openid和你的网站用户进行绑定。
这里,我仅仅用HTML代码显示了下用户个人信息。
打开微信,重新关注你的测试号(以便新增加的菜单生效)。进入测试公众号,点击“OAuth2网页授权”菜单按钮,将获取到用户资料,并在display.php中显示出来。
常见问题处理:
1、 redirect _uri 参数错误
有两个原因导致此错误:授权回调页面域名填写不正确,或者回调页面参数redirect_uri填写不正确。比如上面的URL:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx1234567890&redirect_uri= openid.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect
其中我们的redirect_uri是openid.php,当此页面不存在或者路径写错时会提示此错误。最好用绝对路径的写法,即:
redirect_uri= http://xxx.sinaapp.com/wxpay/openid.php
- 微信开发(2)OAuth2.0
- 微信公众平台开发——微信授权登录(OAuth2.0)
- 微信公众平台开发——微信授权登录(OAuth2.0)
- 微信公众平台开发——微信授权登录(OAuth2.0)
- 微信开发学习 OAUTH2.0 搭配事件推送
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信公众平台开发OAuth2.0网页授权
- 微信公众平台开发--OAuth2.0网页授权
- 微信公众平台开发:OAuth2.0网页授权
- 微信公众平台开发--OAuth2.0网页授权
- 【wechat】微信开发——OAuth2.0网页授权
- 微信公众平台开发 OAuth2.0网页授权认证
- 微信开发网页授权OAuth2.0注意事项
- 微信公众平台开发 OAuth2.0网页授权认证
- java微信开发-OAuth2.0授权
- 微信公众平台开发 OAuth2.0网页授权
- 微信公众平台开发 OAuth2.0网页授权认证
- 官网的shader stencilBuffer篇(续)
- hdu5355--Cake(构造)
- 入市炒股前必读的10本经典书
- 计蒜客 难题题库 124 子串在母串中出现的次数
- hdu DZY Loves Balls
- 微信开发(2)OAuth2.0
- Modis水汽数据MOD05去条带和转投影的问题
- 如何使用Heartbeat,组建一个高可用性的mysql集群
- 计蒜客 难题题库 125 删除字母'c'
- enum添加到combobox和获取
- 2014年03月CCF真题练习答案整理
- HDU 1312 Red and Black
- poj1611
- 为github帐号添加SSH keys