企业商务网站建设的基本方法,网站推广的方式,设计师网站赚钱,网站目录改版授权登录是站点开发常见的应用场景#xff0c;通过社交媒体一键授权可以跳过注册站点账户的繁琐操作。本文将讲解如何用PHP实现QQ授权登录。首先#xff0c;我们需要申请QQ互联开发者账号获得APPID和密钥#xff1b;接着#xff0c;我们下载QQ官方SDK#xff1a;PHP SDK v…授权登录是站点开发常见的应用场景通过社交媒体一键授权可以跳过注册站点账户的繁琐操作。本文将讲解如何用PHP实现QQ授权登录。首先我们需要申请QQ互联开发者账号获得APPID和密钥接着我们下载QQ官方SDKPHP SDK v2.2 并完成安装部署待API测试无误后部署到正式环境并测试最终实现QQ一键登录的效果。
一、QQ互联申请账号密钥
我们需要先申请 APPID 和 APPSECRET。
前往 QQ互联官网(connect.qq.com)注册用户申请网站应用填写网站的一些基本信息完善资料的那一步非常重要。 域名一定不能错。 回调地址一定包含上面填写的完整域名不能是子域名的关系但回调地址的内容可以先随便写后面我们需要根据实际配置修改。 网站备案号根据实际填写。 提供者我写的个人姓名。 网站图标要和实际网站保持一致。 我们填写完成后点击申请大概三个工作日会有结果通过之后我们这个网站应用的APPID和APPSECRET就可以拿来使用了。 二、下载含Oauth接口的SDK
下载QQ官方SDKPHP SDK v2.2 里面有我们需要的Oauth2接口。 三、调试SDK内API接口
我们把压缩包解压放置到我们的服务器项目根目录下WordPress文件夹下先测试一下里面的example文件夹的Oauth接口。
首先我们需要配置APPID和APPSECRET服务器访问localhost或者外网浏览器访问域名下的install文件夹里的index.php页面我访问的是域名/QQAPI/install/index.php这里的QQAPI是我在API上面套的一层文件夹。 填写APPID、APPKEY(我一般叫APPSECRET)、文字提示的回调域名勾选get_user_info点击配置。
我们的配置信息就通过这个页面写入了存储我们配置文件的是API\comm\inc.php文件。如果后面要修改配置信息我们可以删除install下的标识文件重新访问这个页面也可以直接修改inc.php文件。
我们先测试一下example的接口浏览器访问 域名/QQAPI/example界面如下 我们先点击[用QQ账号登录]会让我们用手机QQ扫码确认确认成功会跳转到一个很长字符串的页面出现这个页面就说明我们的登录接口调用成功了。
如果出现可能未开启curl支持的错误那么我们在确保自己PHP开启了curl功能下我们需要去修改一处配置
编辑API\class\URL.class.php文件找到get_contents()函数将if (ini_get(“allow_url_fopen”) “1”)这个判断去掉注释掉If和Else的分支。 保存后我们重新尝试刚刚的登录功能应该是能登录进去了。
然后我们再试试[获取用户信息]可以获取到我们的头像和昵称。 用户信息获取成功。 四、将API部署到正式环境
1、把 example\oauth 文件夹下的 callback.php 重命名为 connect.php并放到根目录(回调文件) 2、修改 connect.php 文件的 require_once(“../../API/qqConnectAPI.php”) 修改为 require_once(“QQAPI/API/qqConnectAPI.php”)
3、把example\oauth文件夹下的index.php移动到API目录下(调用登录的文件) 4、修改index.php文件的require_once(“../../API/qqConnectAPI.php”)修改为require_once(“qqConnectAPI.php”)
5、除connect.php文件和API文件夹删除其他文件和文件夹
6、修改 API\comm\inc.php 的回调地址把之前填写的QQ互联回调地址和这里的回调地址都改成一致的 域名/connect.php 。 如果这里域名和QQ互联上书写不一致哪怕是www的子域名关系也会报错常见报错有“redirect uri is illegal(100010)的验证错误”、“The state does not match. You may be a victim of CSRF.”都是说明是回调地址有问题。 五、测试QQ授权登录功能
我们浏览器访问 域名/QQAPI/API/index.php 出现授权登录界面。 打开connect.php文件我们可以看到刚刚的长字符串是 qq_callback() 和 get_openid() 的返回值。 我们修改connect.php文件让其输出更多内容。
?php
require_once(QQAPI/API/qqConnectAPI.php);
$qc new QC();
$acs $qc-qq_callback();
$oid $qc-get_openid();
$arr $qc-get_user_info();
echo $acs;
echo br /;
echo $oid;
echo br /;
$qc new QC($acs,$oid);
$sex $arr[gender]; //性别
$name $arr[nickname]; //姓名
echo $sex;
echo br /;
echo $name;
echo br /;
$arr $qc-get_user_info();echo meta charsetUTF-8;
echo p;
echo Gender:.$arr[gender];
echo /p;
echo p;
echo NickName:.$arr[nickname];
echo /p;
echo p;
echo img src\.$arr[figureurl].\;
echo p;
echo p;
echo img src\.$arr[figureurl_1].\;
echo p;
echo p;
echo img src\.$arr[figureurl_2].\;
echo p;
echo vip:.$arr[vip];
echo /p;
echo level:.$arr[level];
echo /p;
echo is_yellow_year_vip:.$arr[is_yellow_year_vip];
echo /p;// 开始判断是否获取到openid
if(strlen($oid)1){echo 执行到这里就是登陆成功了可以写自己的代码了;
}
输出头像、昵称、性别等用户信息。 至此我们成功完成了Ouath2.0的认证并取得了关键的用户信息。 六、存储数据和界面展示
我们获得了用户的昵称和头像等信息把它们存储到数据库并通过前台显示此处自由发挥。