微信授权登录 thinkphp版

今天整理一下微信授权登录的过程,方便以后记忆

1.首先在微信公众平台申请 微信测试账号,申请成功后微信平台会自动分配给你appID,appSecret


按照微信的要求填写接口配置信息,假如服务器地址为www.warcello.cn已经安装了thinkphp,

新建一个WechatController.class.php代码如下



namespaceHome\Controller;

useThink\App;

useThink\Controller;

define("TOKEN","qweqwe");

define("AppID","*******");

define("AppSecret","******");

class WechatController extends Controller{

获取微信用户信息

public function index()

{

$echoStr=$_GET["echostr"];

if($this->checkSignature()){

echo$echoStr;

exit;

}

}

private function checkSignature()

{

// you must define TOKEN by yourself

if(!defined("TOKEN")) {

throw newException('TOKEN is not defined!');

}

$signature=$_GET["signature"];

$timestamp=$_GET["timestamp"];

$nonce=$_GET["nonce"];

$token=TOKEN;

$tmpArr= array($token, $timestamp, $nonce);

// use SORT_STRING rule

sort($tmpArr, SORT_STRING);

$tmpStr=implode( $tmpArr );

$tmpStr=sha1( $tmpStr );

if( $tmpStr==$signature ){

return true;

}else{

return false;

}

}

}

将服务器上访问WeChat控制器的地址,token录入

微信授权登录 thinkphp版_第1张图片

提交成功后修改网页账号域名,如图:


微信授权登录 thinkphp版_第2张图片

点击后会弹出如下窗口


微信授权登录 thinkphp版_第3张图片

在该页面输入域名即可  ,不要带http

2.授权登录方法,根据微信文档描述,将

public  function getOauthAccessToken() {

$appid='公众号的appid';

$redirect_uri = '需要授权成功后跳转的地址';

$scope = 'snsapi_userinfo';//弹出授权页面 snsapi_base静默授权

$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=REDIRECT_URI&response_type=code&scope=$scopeE&state=STATE#wechat_redirect";

redirect($url);

}

授权成功后将自动跳转到redirect_uri,并带着code

3.拿到上面获取的code后,去换取用户的openid

public function getCode($code){

$appid = appid;

$secret = secret;

$code = $code;

$url= "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";

$curl=curl_init();//初始化一个 cURL 对象

curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);// 获取数据返回

curl_setopt($curl, CURLOPT_TIMEOUT,500);//设置一个长整形数,作为最大延续多少秒

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false);

curl_setopt($curl, CURLOPT_URL,$url);

curl_setopt($curl, CURLOPT_BINARYTRANSFER,true) ;// 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回

$res=curl_exec($curl);

curl_close($curl);

$result = json_decode($res);

return $result;

}

这部成功后已经可以拿到用户的openid了,然后再根据上面的方法获取用户信息;

你可能感兴趣的:(微信授权登录 thinkphp版)