PFinal\Wechat\Service\OAuthService::getUser PHP Method

getUser() public static method

获取微信用户信息,此方法会跳转到微信授权页面获取用户授权然后返回 在ajax中调用本方法,无效
public static getUser ( boolean | false $openidOnly = false ) : array
$openidOnly boolean | false 此参数为true时,仅返回openid 响应速度会更快,并且不需要用户点击同意授权
return array
    public static function getUser($openidOnly = false)
    {
        $flashKey = md5(__FILE__) . 'oAuthAuthState';
        //从微信oAuth页面跳转回来
        if (Session::hasFlash($flashKey)) {
            $flashData = @unserialize(Session::getFlash($flashKey));
            if (is_array($flashData) && time() - $flashData[0] < 60 && isset($_GET['state']) && $_GET['state'] === $flashData[1]) {
                if (!isset($_GET['state'])) {
                    throw new WechatException('微信网页授权失败');
                }
                //通过code换取网页授权access_token
                $OauthAccessTokenArr = self::getOauthAccessToken($_GET['code']);
                if ($openidOnly) {
                    return $OauthAccessTokenArr;
                }
                //拉取用户信息(需scope为 snsapi_userinfo)
                return self::getOauthUserInfo($OauthAccessTokenArr['openid'], $OauthAccessTokenArr['access_token']);
            }
        }
        //当前url
        $uri = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        //跳转到微信oAuth授权页面
        $state = uniqid();
        Session::setFlash($flashKey, serialize(array(time(), $state)));
        self::redirect($uri, $state, $openidOnly ? 'snsapi_base' : 'snsapi_userinfo');
    }

Usage Example

Example #1
0
File: mp.php Project: pfinal/wechat
    //$arr = \PFinal\Wechat\Service\MaterialService::uploadFile('./video.mp4', 'video', '测试', '描述');
    //var_dump($arr);
    //var_dump(\PFinal\Wechat\Service\MessageService::send($openid2, new \PFinal\Wechat\Message\Video($videoMediaId, $imageMediaId, 'aa', 'bb')));
    exit;
}
if (isset($_GET['token'])) {
    echo $api->getAccessToken(false);
    //不使用缓存,直接从服务器获取token
    exit;
}
if (isset($_GET['openid'])) {
    echo \PFinal\Wechat\Service\OAuthService::getOpenid();
    exit;
}
if (isset($_GET['user'])) {
    $user = \PFinal\Wechat\Service\OAuthService::getUser();
    var_dump($user);
    exit;
}
if (isset($_GET['send'])) {
    $result = \PFinal\Wechat\Service\MessageService::send($openid2, new \PFinal\Wechat\Message\Text('test'));
    var_dump($result);
    exit;
}
if (isset($_GET['preview'])) {
    //$result = \PFinal\Wechat\Service\MessageService::previewWithWxname('rainphp',new \PFinal\Wechat\Message\Text('test'));
    //$result = \PFinal\Wechat\Service\MessageService::previewWithWxname('rainphp',new \PFinal\Wechat\Message\Image($imageMediaId));
    //$result = \PFinal\Wechat\Service\MessageService::previewWithWxname('rainphp',new \PFinal\Wechat\Message\Voice($voiceMediaId));
    //$result = \PFinal\Wechat\Service\MessageService::previewWithWxname('rainphp',new \PFinal\Wechat\Message\MpNews($newsMediaId));
    $result = \PFinal\Wechat\Service\MaterialService::uploadFile('./voice.mp3', 'music');
    var_dump($result);