Это первый раз, когда вы входите в 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, чтобы сделать это, а затем самостоятельно добавить эти подробные услуги.