Home >php教程 >php手册 >微信会员注册开发【带源码】:网页授权,得到code后在当前页面获

微信会员注册开发【带源码】:网页授权,得到code后在当前页面获

WBOY
WBOYOriginal
2016-06-06 20:02:211592browse

开发情景: 作者主页:天际app工作室http://home.zhubajie.com/7145093/ 需要引导微信公众平台用户点击链接进入注册页面,在注册页面需要获取用户微信的openid。技术核心是需要借助网页授权,并且在得到授权code时通过js立刻获取openid。 网上关于网页授权后



开发情景:

作者主页:天际app工作室 http://home.zhubajie.com/7145093/

需要引导微信公众平台用户点击链接进入注册页面,在注册页面需要获取用户微信的openid。技术核心是需要借助网页授权,并且在得到授权code时通过js立刻获取openid。

网上关于网页授权后一步步获取openid的文章大多是理论步骤的解说,落实到代码上具体怎么尽可能快的拿到openid的内容很少。笔者十分愤怒,决定写下代码和大家分享


这个过程需要一个前端页面代码和一个后端辅助程序,我这里前端是html+js,后端是php。

直接上代码,代码里注释解释的比较清楚:

前端:index.html

>
<!-- 天际app工作室 http://home.zhubajie.com/7145093/ -->


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
<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">

<title>会员注册</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">

 function callback(result) {  
        alert('cucess');  
        alert(result);  //输出openid
    }  
    
function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]); return null;
    }


var code = getQueryString("code");

$.ajax({ 
      async: false, 
      url: "http://arvon2012.sinaapp.com/oauth2.php", //这是我的服务端处理文件php的
      type: "GET", 
      //下面几行是jsoup,如果去掉下面几行的注释,后端对应的返回结果也要去掉注释
      // dataType: 'jsonp', 
      // jsonp: 'callback', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象. 
      // jsonpCallback:'callback',
      data: {code:code}, //传递本页面获取的code到后台,以便后台获取openid
      timeout: 5000, 
      success: function (result) { 
        callback(result);
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
          alert(textStatus); 
      } 
  });


</script>





下面是服务端对应的代码,oauth2.php

<?php //天际app工作室 http://home.zhubajie.com/7145093/
$code = $_GET['code'];//前端传来的code值

$appid = "xxxxxxxxxxxxxxxx";
$appsecret = "xxxxxxxxxxxxxxxxxxxxxx";

//获取openid
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";

$result = https_request($url);

$jsoninfo = json_decode($result, true);
$openid = $jsoninfo["openid"];//从返回json结果中读出openid

$callback=$_GET['callback'];  
// echo $callback."({result:'".$openid."'})"; 
echo $openid; //把openid 送回前端

function https_request($url,$data = null){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

?>





Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn