微信开发(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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-28 20:53:22

微信开发(2)OAuth2.0的相关文章

Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静下心来坚持一开始的选择,继续我们的微信系列文章的后续更新,也希望在自己有时间的时候能把更多的内容呈现给大家,前面一系列的文章讲述了很多微信开发相关的基础知识点 [微信系列文章],那么从这一篇开始将讲述微信较深一层次或者说在产品应用中时刻会用到的一些技术点,那么下面就让我们进入正题吧,这一篇我要讲述的

微信公众平台oauth2.0网页授权

本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对应用户捆绑在一起等网页应用. 微信公众平台oauth2.0网页授权能干什么 它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务. 说明与注意 1.网页授权分为两种, 一种为只获取openid  (基本授权 snsapi_base) 一种为获取用户全部信息 (高级授权 snsa

微信公众平台开发—利用OAuth2.0获取微信用户基本信息

1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url获取微信回传code值(appid可在微信平台下找到) 1).微信不弹出授权页面url: A.code回传到页面wxProcess2.aspx,不带参数 [csharp] view plain copy Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&

微信企业号:OAuth2.0微信授权验证

企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息.使用步骤和方法如下: 1.先开发要使用微信授权认证的网页应用,这个网址必须在互联网上. 2.生成回调网址 企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接: https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_t

微信网页授权(OAuth2.0) PHP 源码简单实现

提要: 1. 建议对OAuth2.0协议做一个学习. 2. 微信官方文档和微信官网工具要得到充分利用. 比较简单,直接帖源代码了.其中“xxxxxxxxxx”部分,是需要依据自己环境做替换的 /** * OAuth2.0微信授权登录实现 * * @author zzy * @文件名:GetWxUserInfo.php */ // 回调地址 $url = urlencode("http://www.xxxxxxxxx.com/GetWxUserInfo.php"); // 公众号的id和

京东联盟开发(4) OAuth2.0授权

本文介绍京东联盟开发过程中OAuth2.0授权过程. 一.OAuth2.0定义 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的私密的资源(如用户个人信息.照片.视频.

***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

微信公众平台开发(71)OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

(转)微信公众平台开发 OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

微信公众平台开发 OAuth2.0网页授权认证

一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的私