Внутренняя страница WeChat вызывает вход в систему WeChat - Блог CSDN

задняя часть PHP WeChat API

Это первый раз, когда вы входите в WeChat после изучения PHP. Запишите шаги и будьте осторожны, чтобы не забыть их. Пожалуйста, обратитесь к нему и прокомментируйте, если у вас есть какие-либо вопросы.
Войдите на стороннюю страницу в WeChat, которая в публичной платформе называется: авторизация на веб-странице, а документ находится по адресуБилеты.WeChat.QQ.com/wiki?Он = горячая вода...

Условие: учетная запись службы прошла проверку подлинности, и были открыты полномочия интерфейса авторизации веб-страницы (вставить глазTickets.WeChat.QQ.com/advanced/Ade…);

работать:
1. Установить адрес обратного звонка в фоне сервисного аккаунта (порталБилеты. WeChat.QQ.com/CGI-bin/set…),Буду «Авторизованные доменные имена веб-сайта»
” можно изменить на зарегистрированное доменное имя хоста сервисного номера;
2. Код в проекте: (автор оригинала неизвестен, я код скопированного коллеги)
//Получить авторизованный URL WeChat
redirect_uri – это конкретная страница, на которую вы хотите вернуться после успешного входа. Хост должен быть указан на первом шаге.
Параметр $state

public function get_authorize_url()
{
    $authorize_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->appId . '&redirect_uri=' . $this->redirect_uri . '&response_type=code&scope=snsapi_userinfo&state=' . time() . '#wechat_redirect';
    $this->redirect($authorize_url);
    //return $authorize_url;
}

/**
 * 根据code获取授权toke
 *
 * @param  $parameters
 */
public function get_access_token($code)
{
    $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appId . '&secret=' . $this->appSecret . '&code=' . $code . '&grant_type=authorization_code';
    $res = $this->https_request($token_url);
    $res = json_decode($res, true);
    //返回一个对象
    session('z_openid', $res['openid']);

    $result = $this->get_userinfo($res['access_token'], $res['openid']);
    //获取用户id

    $user_id = $this->check_user($result);
    session('z_user_id', $user_id);
    $this->redirect(url('Index/User'));
    //var_dump($user_id);

    // return json_decode($res);
}


public function check_user($result)
{
    //用户是否存在
    $exist_user = db('*****')->where('****', '=', $result->unionid)->find();
    if (!empty($exist_user)) {
        $user_id = $exist_user['****'];
    } else {
        if ($result->sex == 1) {
            $sex = '男';
        } else if ($result->sex == 2) {
            $sex = '女';
        } else {
            $sex = '0';
        }

        $data = [

// 'invite_code' => $invite_code,
**’ => $result->псевдоним,
**’ => $секс,
**’ => $result->headimgurl,
**’ => $result->unionid,
**’ => время()
];
БД('у****о')->вставить( данные); one_info = db('u****')->where('u****d', '=', результат->unioni d)->find(); user_id = one_info['i****']; 
        }  
        return user_id;
}

public function get_userinfo($access_token, $oppenid)
{
    $info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $oppenid;
    $res = $this->https_request($info_url);
    //var_dump($res);
    return json_decode($res);
}

/**
 * https请求
 * @param  $url  请求网址
 */
public 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;
}

В шаблоне кнопка входа в WeChat требует только вызова функции get_authorize_url, чтобы сделать это, а затем самостоятельно добавить эти подробные услуги.

Категории