美文网首页Thinkphp微信开发
微信授权登录 thinkphp版

微信授权登录 thinkphp版

作者: warcello | 来源:发表于2016-11-10 17:21 被阅读4395次

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

    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录入

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

    点击后会弹出如下窗口

    在该页面输入域名即可  ,不要带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版

        本文链接:https://www.haomeiwen.com/subject/xsjxpttx.html