要获取openid是不是要进入微信支付openid的获取

微信开发-获取关注者列表,用户的openid_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
&购买后可评价
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
微信开发-获取关注者列表,用户的openid
||文档简介
人力资源管理师|
总评分2.0|
浏览量2094
&&微​信​开​发​-​获​取​关​注​者​列​表​,​用​户​的​o​p​e​n​i​d
大小:11页
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢6679人阅读
javascript(26)
& & &最近在修改一个移动商城,由于wap端是HTML5的,还大量使用了art模板技术,一开始修改很不适应,而且实现HTML5取openid一直没能实现很好的实现,经过对获取原理的理解和学习,终于还是实现了HTML获取微信openid,而且改动不大,闲话少说,直接上干货:
一、写个js,用于取accesscode,并直接通过openid读取用户表中的注册信息
$(function () {
var wxopenid=getcookie('wxopenid');
var key=getcookie('key');
if (key==''){
var access_code=GetQueryString('code');
if (wxopenid==&&){
if (access_code==null)
var fromurl=location.
var url='https://open./connect/oauth2/authorize?appid=填你自已的appid哟&redirect_uri='+encodeURIComponent(fromurl)+'&response_type=code&scope=snsapi_base&state=STATE%23wechat_redirect&connect_redirect=1#wechat_redirect';
location.href=
type:'get',
url:ApiUrl+'/index.php?act=payment&op=getopenid',
async:false,
cache:false,
data:{code:access_code},
dataType:'json',
success:function(result){
if (result!=null && result.hasOwnProperty('openid') && result.openid!=&&){
addcookie('wxopenid',result.openid,360000);
getlogininfo(result.openid);
alert('微信身份识别失败 \n '+result);
location.href=
if (key=='' && wxopenid!='')
getlogininfo(wxopenid);
function getlogininfo(wxopenid){
type:'get',
url: ApiUrl + '/index.php?act=login&op=autologininfo',
data: { wxopenid:wxopenid},
dataType:'json',
async:false,
cache:false,
success: function (result) {
if (result.return_code=='OK'){
addcookie('key',result.memberinfo.key);
addcookie('username',result.memberinfo.username);
alert(result.return_msg);
location.href=WapSiteUrl+'/tmpl/member/login.html';
});第二步:在html页的head中加载js文件
&meta charset=&UTF-8&&
&title&麦斯卡商城&/title&
&meta name=&viewport& content=&width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0&&
&meta name=&apple-mobile-web-app-capable& content=&yes&&
&meta name=&apple-mobile-web-app-status-bar-style& content=&black&&
&meta name=&format-detection& content=&telephone=no&&
&link rel=&stylesheet& type=&text/css& href=&css/reset.css&&
&link rel=&stylesheet& type=&text/css& href=&css/main.css&&
&link rel=&stylesheet& type=&text/css& href=&css/index.css&&
&link rel=&stylesheet& type=&text/css& href=&css/member.css&&
&script type=&text/javascript& src=&js/config.js&&&/script&
&script type=&text/javascript& src=&js/zepto.min.js&&&/script&
&script type=&text/javascript& src=&js/template.js&&&/script&
&script type=&text/javascript& src=&js/common.js&&&/script&
&script type=&text/javascript& src=&js/getwxopenid_index.js&&&/script&
&/head&第三步:实现openid的后台方法,这个方法不详列了,官方有示例
* 获取openid
* @return type
public function getopenidOp(){
$jsApi=new JsApi_pub();
$code = $_GET['code'];
$jsApi-&setCode($code);
echo $jsApi-&getOpenId();
}function getOpenid()
&span style=&white-space:pre&& &/span&{
            $url = $this-&createOauthUrlForOpenid();
            return $this-&httpGet($url);
&span style=&white-space:pre&& &/span&}
&span style=&white-space:pre&& &/span& * &span style=&white-space:pre&& &/span&作用:生成可以获得openid的url
&span style=&white-space:pre&& &/span& */
&span style=&white-space:pre&& &/span&function createOauthUrlForOpenid()
&span style=&white-space:pre&& &/span&{
&span style=&white-space:pre&&
&/span&$urlObj[&appid&] = WxPayConf_pub::APPID;
&span style=&white-space:pre&&
&/span&$urlObj[&secret&] = WxPayConf_pub::APPSECRET;
&span style=&white-space:pre&&
&/span&$urlObj[&code&] = $this-&
&span style=&white-space:pre&&
&/span&$urlObj[&grant_type&] = &authorization_code&;
&span style=&white-space:pre&&
&/span&$bizString = $this-&formatBizQueryParaMap($urlObj, false);
                //api.=101.226.90.58
&span style=&white-space:pre&&
&/span&return &https://api./sns/oauth2/access_token?&.$bizS
&span style=&white-space:pre&& &/span&}
function addcookie(name,value,expireHours){
var cookieString=name+&=&+escape(value)+&; path=/&;
//判断是否设置过期时间
if(expireHours&0){
var date=new Date();
date.setTime(date.getTime+expireHours*);
cookieString=cookieString+&; expire=&+date.toGMTString();
document.cookie=cookieS
function getcookie(name){
var strcookie=document.
var arrcookie=strcookie.split(&; &);
for(var i=0;i&arrcookie.i++){
var arr=arrcookie[i].split(&=&);
if(arr[0]==name)return decodeURIComponent(arr[1]); //增加对特殊字符的解析
return &&;
function delCookie(name){//删除cookie
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getcookie(name);
if(cval!=null) document.cookie= name + &=&+cval+&; path=/;expires=&+exp.toGMTString();
另外,js文件中的变量,尽量不要用全局的,当多个js加载时,变量可能冲突,造成一些不可预则的问题;
这样就实现了在html5页面直接取accesscode,再通过ajax方法在后台取openid;
&如果要看效果,可以微信扫码进入商城(本来只想放个二维码,又怕有人以为是什么下载链接)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:359574次
积分:4303
积分:4303
排名:第3798名
原创:103篇
转载:35篇
评论:96条
(1)(5)(5)(2)(1)(7)(1)(1)(1)(4)(3)(1)(1)(1)(1)(1)(1)(3)(4)(1)(4)(1)(1)(1)(4)(6)(2)(7)(3)(1)(3)(14)(2)(1)(1)(4)(2)(3)(1)(2)(4)(1)(2)(2)(9)(1)(1)(1)(1)(2)(1)(2)(4)(1)微信公众平台开发—利用OAuth2.0获取微信用户基本信息
在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息
1、首先在某微信平台下配置OAuth2.0授权回调页面:
2、通过appid构造url获取微信回传code值(appid可在微信平台下找到)
1)、微信不弹出授权页面url:
A、code回传到页面wxProcess2.aspx,不带参数
Response.Redirect("="
"&redirect_uri=http://localhost:8888/wxProcess2.aspx&response_type=code&scope=snsapi_base&state=1#wechat_redirect");&&
B、code回传到页面wxProcess2.aspx,带参数reurl,即wxProcess2.aspx获得code的同时,也能获取reurl的值,具体如下:
Response.Redirect("="
"&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" +
"&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
2)、微信弹出授权页面url:需要用户授权,才能获取code及后面需要获取的用户信息
Response.Redirect("="
"&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" +
"&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");
说明:微信是否弹出授权页面url的区别只在一个参数scope,不弹出微信授权页面:scope=snsapi_base,弹出微信授权页面:scope=snsapi_userinfo。
微信授权页面如下:
3、通过appid、secret、code构造url,获取微信用户的openid和access
token。appid、secret可在微信平台下找到,code已在上面方法中获取并回传。具体访问url:
+ appid + "&secret=" + appsecret + "&code=" + Code +
"&grant_type=authorization_code
4、通过openid、access token获取用户信息,具体访问url:
+ REFRESH_TOKEN + "&openid=" + OPENID
说明:主要通过访问微信的3个url地址并回传数据,获取微信用户基本信息
====================================================================
具体代码:
1、获取微信code处理页面:wxProcess.aspx
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
&&&&&&&&&&&
string reurl = "";
&&&&&&&&&&&
//传递参数,获取用户信息后,可跳转到自己定义的页面,想怎么处理就怎么处理
&&&&&&&&&&&
if (Request.QueryString["reurl"] != null &&
Request.QueryString["reurl"] != "")
&&&&&&&&&&&
&&&&&&&&&&&&&&&
reurl = Request.QueryString["reurl"].ToString();
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
reurl = "";
&&&&&&&&&&&
&&&&&&&&&&&
string code = "";
&&&&&&&&&&&
//弹出授权页面(如在不弹出授权页面基础下未获得openid,则弹出授权页面,提示用户授权)
&&&&&&&&&&&
if (Request.QueryString["auth"] != null &&
Request.QueryString["auth"] != "" &&
Request.QueryString["auth"] == "1")
&&&&&&&&&&&
&&&&&&&&&&&&&&&
Response.Redirect("="
"&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" +
"&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
//不弹出授权页面
&&&&&&&&&&&&&&&
Response.Redirect("="
"&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" +
"&response_type=code&scope=snsapi_base&state=1#wechat_redirect");&&&&&&&&&&&
2、获取微信code值回传到自己的页面wxProcess2.aspx:
public string reurl = "";
&&& protected
void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
&&&&&&&&&&&
//获取从wxProcess.aspx传递过来的跳转地址reurl
&&&&&&&&&&&
if (Request.QueryString["reurl"] != null &&
Request.QueryString["reurl"] != "")
&&&&&&&&&&&
&&&&&&&&&&&&&&&
reurl = Request.QueryString["reurl"].ToString();
&&&&&&&&&&&
&&&&&&&&&&&
string code = "";
&&&&&&&&&&&
if (Request.QueryString["code"] != null &&
Request.QueryString["code"] != "")
&&&&&&&&&&&
&&&&&&&&&&&&&&&
//获取微信回传的code
&&&&&&&&&&&&&&&
Request.QueryString["code"].ToString();&&
&&&&&&&&&&&&&&&
OAuth_Token Model = Get_token(code);&
//获取token
&&&&&&&&&&&&&&&
OAuthUser OAuthUser_Model = Get_UserInfo(Model.access_token,
Model.openid );
&&&&&&&&&&&&&&&
if(OAuthUser_Model.openid!=null && OAuthUser_Model.openid
!="")& //已获取得openid及其他信息
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
//在页面上输出用户信息
&&&&&&&&&&&&&&&&&&&
Response.Write("用户OPENID:" + OAuthUser_Model.openid + "
用户昵称:" + OAuthUser_Model.nickname + "
性别:" + OAuthUser_Model.sex + "
所在省:" + OAuthUser_Model.province + "
所在市:" + OAuthUser_Model.city + "
所在国家:" + OAuthUser_Model.country + "
头像地址:" + OAuthUser_Model.headimgurl + "
用户特权信息:" + OAuthUser_Model.privilege);
&&&&&&&&&&&&&&&&&&&
//或跳转到自己的页面,想怎么处理就怎么处理
&&&&&&&&&&&&&&&&&&&
Response.Redirect(reurl);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
//未获得openid,回到wxProcess.aspx,访问弹出微信授权页面
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
Response.Redirect("wxProcess.aspx?auth=1");
&&&&&&&&&&&&&&&
&&&&&&&&&&&
& &#region 属性
&&& public
string appid = "wxbffa123f";&
//公众微信平台下可以找到
&&& public
string appsecret =
"9d693f7a281115p78445";&
//公众微信平台下可以找到
#endregion
&//根据appid,secret,code获取微信openid、access
&&& protected
OAuth_Token Get_token(string Code)
//获取微信回传的openid、access token
string Str = GetJson("="
+ appid + "&secret=" + appsecret + "&code=" + Code +
"&grant_type=authorization_code");
//微信回传的数据为Json格式,将Json格式转化成对象
OAuth_Token Oauth_Token_Model =
JsonHelper.ParseFromJson(Str);
return Oauth_Token_M
//刷新Token(好像这个刷新Token没有实际作用)
&&& protected
OAuth_Token refresh_token(string REFRESH_TOKEN)
string Str = GetJson("="
+ appid + "&grant_type=refresh_token&refresh_token=" +
REFRESH_TOKEN);
OAuth_Token Oauth_Token_Model =
JsonHelper.ParseFromJson(Str);
return Oauth_Token_M
//根据openid,access token获得用户信息
&&& protected
OAuthUser Get_UserInfo(string REFRESH_TOKEN, string OPENID)
string Str = GetJson("="
+ REFRESH_TOKEN + "&openid=" + OPENID);
OAuthUser OAuthUser_Model = JsonHelper.ParseFromJson(Str);
return OAuthUser_M
//访问微信url并返回微信信息
&&& protected
string GetJson(string url)
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultC
wc.Encoding = Encoding.UTF8;
string returnText = wc.DownloadString(url);
if (returnText.Contains("errcode"))
&&&&&&&&&&&
//可能发生错误
return returnT
&&& public class
OAuth_Token
public OAuth_Token()
&&&&&&&&&&&
&&&&&&&&&&&
//TODO: 在此处添加构造函数逻辑
&&&&&&&&&&&
//access_token&网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
//expires_in&access_token接口调用凭证超时时间,单位(秒)
//refresh_token&用户刷新access_token
//openid&用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
//scope&用户授权的作用域,使用逗号(,)分隔
public string _access_
public string _expires_
public string _refresh_
public string _
public string _
public string access_token
&&&&&&&&&&&
set { _access_token = }
&&&&&&&&&&&
get { return _access_ }
public string expires_in
&&&&&&&&&&&
set { _expires_in = }
&&&&&&&&&&&
get { return _expires_ }
public string refresh_token
&&&&&&&&&&&
set { _refresh_token = }
&&&&&&&&&&&
get { return _refresh_ }
public string openid
&&&&&&&&&&&
set { _openid = }
&&&&&&&&&&&
get { return _ }
public string scope
&&&&&&&&&&&
set { _scope = }
&&&&&&&&&&&
get { return _ }
用户信息类
&&& public class
public OAuthUser()
#region 数据库字段
private string _openID;
private string _searchT
private string _
private string _
private string _
private string _
private string _
private string _headimgU
private string _
#endregion
#region 字段属性
/// 用户的唯一标识
public string openid
&&&&&&&&&&&
set { _openID = }
&&&&&&&&&&&
get { return _openID; }
public string SearchText
&&&&&&&&&&&
set { _searchText = }
&&&&&&&&&&&
get { return _searchT }
/// 用户昵称
public string nickname
&&&&&&&&&&&
set { _nickname = }
&&&&&&&&&&&
get { return _ }
/// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
public string sex
&&&&&&&&&&&
set { _sex = }
&&&&&&&&&&&
get { return _ }
/// 用户个人资料填写的省份
public string province
&&&&&&&&&&&
set { _province = }
&&&&&&&&&&&
get { return _ }
/// 普通用户个人资料填写的城市
public string city
&&&&&&&&&&&
set { _city = }
&&&&&&&&&&&
get { return _ }
/// 国家,如中国为CN
public string country
&&&&&&&&&&&
set { _country = }
&&&&&&&&&&&
get { return _ }
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
public string headimgurl
&&&&&&&&&&&
set { _headimgUrl = }
&&&&&&&&&&&
get { return _headimgU }
/// 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)其实这个格式称不上JSON,只是个单纯数组
public string privilege
&&&&&&&&&&&
set { _privilege = }
&&&&&&&&&&&
get { return _ }
#endregion
将Json格式数据转化成对象
&&& public class
JsonHelper
/// 生成Json格式&
public static string GetJson(T obj)
&&&&&&&&&&&
DataContractJsonSerializer json = new
DataContractJsonSerializer(obj.GetType());
&&&&&&&&&&&
using (MemoryStream stream = new MemoryStream())
&&&&&&&&&&&
&&&&&&&&&&&&&&&
json.WriteObject(stream, obj);
&&&&&&&&&&&&&&&
string szJson = Encoding.UTF8.GetString(stream.ToArray()); return
&&&&&&&&&&&
/// 获取Json的Model&
public static T ParseFromJson(string szJson)
&&&&&&&&&&&
T obj = Activator.CreateInstance();
&&&&&&&&&&&
using (MemoryStream ms = new
MemoryStream(Encoding.UTF8.GetBytes(szJson)))
&&&&&&&&&&&
&&&&&&&&&&&&&&&
DataContractJsonSerializer serializer = new
DataContractJsonSerializer(obj.GetType());
&&&&&&&&&&&&&&&
return (T)serializer.ReadObject(ms);
&&&&&&&&&&&
&输出微信用户信息:
CSDN博客地址:
CSDN源码下载地址:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 微信支付openid的获取 的文章

 

随机推荐