php公众号第三方登录,微信公众号开发小记——3.接入三方登录
时间: 2023-11-19 10:07:09 浏览: 145
谈谈第三方App接入微信登录 解读
接入第三方登录是让用户方便快捷地使用已有账号登录你的网站或应用程序,提高用户体验的一种方式。本文将介绍如何使用 PHP 实现微信公众号第三方登录。
1. 获取微信授权
首先,需要获取微信用户的授权。具体步骤如下:
1)引导用户打开微信授权页面:
```php
$appid = 'your_appid';
$redirect_uri = urlencode('http://yourdomain.com/callback.php');
$scope = 'snsapi_userinfo';
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=STATE#wechat_redirect";
header("Location: $url");
```
其中,`$appid` 是你的微信公众号的 AppID,`$redirect_uri` 是授权后回调的 URL,`$scope` 是授权作用域,可以是 `snsapi_base` 或 `snsapi_userinfo`,`$state` 是自定义参数,用于防止 CSRF 攻击。
2)获取授权码:
用户同意授权后,会重定向到 `$redirect_uri` 指定的 URL,带上授权码 `code` 和 `state` 参数。
```php
$code = $_GET['code'];
$state = $_GET['state'];
```
3)获取 access_token 和 openid:
使用授权码 `code` 获取 `access_token` 和 `openid`。
```php
$access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$response = file_get_contents($access_token_url);
$result = json_decode($response, true);
$access_token = $result['access_token'];
$openid = $result['openid'];
```
其中,`$secret` 是你的微信公众号的 AppSecret。
2. 获取用户信息
获取到 `access_token` 和 `openid` 后,可以使用以下代码获取用户信息:
```php
$userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$response = file_get_contents($userinfo_url);
$userinfo = json_decode($response, true);
```
其中,`$userinfo` 包含用户的昵称、头像等信息。
3. 将用户信息保存到数据库
最后,将获取到的用户信息保存到数据库中,以便下次使用时快速登录。
```php
// 连接数据库
$con = mysqli_connect('localhost', 'username', 'password', 'database');
mysqli_set_charset($con, "utf8");
// 查询用户是否已存在
$sql = "SELECT * FROM users WHERE openid='$openid'";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) == 0) {
// 用户不存在,插入新用户信息
$nickname = mysqli_real_escape_string($con, $userinfo['nickname']);
$headimgurl = mysqli_real_escape_string($con, $userinfo['headimgurl']);
$sql = "INSERT INTO users (openid, nickname, headimgurl) VALUES ('$openid', '$nickname', '$headimgurl')";
mysqli_query($con, $sql);
}
// 保存用户登录状态
$_SESSION['openid'] = $openid;
```
以上就是使用 PHP 实现微信公众号第三方登录的步骤。需要注意的是,为了确保安全性,应该对用户输入的数据进行过滤和验证,防止 SQL 注入和 XSS 攻击等。
阅读全文