微信投票-获取openid

入口文件:code.php

function code()
{

    //回调地址
    $REDIRECT_URI = 'http://XXXXXXXXXX/openid.php‘ ;

    //请求weixin接口 获取code
    $to_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXX&redirect_uri=' . urlencode($REDIRECT_URI) . '&response_type=code&scope=snsapi_base&state=TEST#wechat_redirect';
    header("Location:" . $to_url);
    exit;
}
code();

-----------------------------------------------------------------------------------------------

获得微信用户ID openid.php

function webopenid ()
{
    $appId = 'XXXXXXXXX';
    $appSecret = 'XXXXXXXXX';
    $state = 'TEST';
    if ($_GET['state'] == $state) {
        $code = $_GET['code'];
        $uinfo = file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appId . "&secret=" . $appSecret . "&code=" . $code . "&grant_type=authorization_code");
        $uinfo = (array)json_decode($uinfo);
        $openid = $uinfo['openid'];

         //通过GET方法传入程序 (“XXXXX”为服务器主程序入口)

         header("Location:" . "http://wwwXXXXXXXXXXXXXXXXX?openid=".$openid);
    }
}
webopenid();


注:

1.本方法只针对服务号

2.snsapi_base 与 snsapi_userinfo的区别 base只能获取openid 而info可以获取用户所有信息

3,服务号中要将网页服务地址 改为自己服务器地址

你可能感兴趣的:(PHP)