您的位置:首页 > 移动开发 > 微信开发

微信网页授权,并获取用户头像,昵称等基本信息代码实例

2019-05-28 20:07 627 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/hj960511/article/details/81877348

html中的js片段:

var this_page_url  = "当前界面地址";//通过函数自己获取
var openid  = "通过模板赋值活get获取的";
var appID  = "您的公众号appid";
var nickname  = "通过模板赋值活get获取的";
var headimgurl = "通过模板赋值活get获取的";
var redirectUri  = "你的回调地址}/这个是受理用户数据的方法路径";
//用户头像和昵称按照自己的需要进行填写
if(openid == null  || openid == ''|| openid == undefined){ // 通过这个判断openid是否存在进行html页面里的跳转
var recatTo= "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + redirectUri + "&response_type=code&scope=snsapi_userinfo&state=0#wechat_redirect";
window.location.href = recatTo;
}

php文件中的代码片段:

<?php

$code = isset($_GET['code'])?$_GET['code']:'';//或者使用框架自带的request 方法获取这个code
$this_page_url = ‘需要传递这个当前地址url 用于登录以后的还原’;//可以使用_getNowUrl() 这个自定义函数
$appSecret =‘公众号密钥’;
$appId = ‘公众号appid’;
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appId&secret=$appSecret&code={$code}&grant_type=authorization_code";
$r = file_get_contents($url);
$json=(array)json_decode($r);//这个是从微信获取到的openid数据和密钥token
if(!isset($json['errcode'])){
$openid = $json['openid'];
$url ="https://api.weixin.qq.com/sns/userinfo?access_token=".$json['access_token']."&openid=".$json['openid'];
$res = file_get_contents($url);
$json = (array)json_decode($res);//这里是将返回过来的json对象转成数组
$headimgurl = $json['headimgurl'];
$nickname = $json['nickname'];
// 将相关获取到的 数据信息 openid、昵称、头像等)地址参数跳回前端页面
header("Location:'.$this_page_url .'?openid=$openid&nickname=$nickname&headimgurl=$headimgurl");
}
return  ‘获取失败’;

php使用的自定义函数:

//获取完整当前路径
function _getNowUrl(){
//检测是否是https 或者http
$is_https = false;
if ( !empty($_SERVER['HTTPS'])
&& strtolower($_SERVER['HTTPS']) !== 'off') {
$is_https = true;
} elseif (
isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$is_https = true;
} elseif (
!empty($_SERVER['HTTP_FRONT_END_HTTPS'])
&& strtolower($_SERVER['HTTP_FRONT_END_HTTPS'])
!== 'off') {
$is_https = true;
}
//判断是否是http或者https
if($is_https ){
$http = 'https://';
}else{
$http = 'http://';
}
$string =  $http.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
return $string;
}

注:博主根据微信官方手册手写的实例,希望能给到给位朋友帮助。这里要注意的细节比较多,state 这个参数要了解一下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: