PHP實(shí)現(xiàn)QQ登錄的開原理和實(shí)現(xiàn)過程
第三方登錄,就是使用大家比較熟悉的比如QQ、微信、微博等第三方軟件登錄自己的網(wǎng)站,這可以免去注冊賬號、快速留住用戶的目的,免去了相對復(fù)雜的注冊流程。下邊就給大家講一下怎么使用PHP開發(fā)QQ登錄的功能。
1、進(jìn)入QQ互聯(lián)官網(wǎng)進(jìn)行登錄(可以使用自己的QQ或者重新注冊一個QQ號作為咱們項(xiàng)目的單獨(dú)QQ進(jìn)行管理),地址:https://connect.qq.com/
2、點(diǎn)擊“應(yīng)用管理”進(jìn)入QQ互聯(lián)管理中心,在這里進(jìn)行相關(guān)應(yīng)用的創(chuàng)建,分為 網(wǎng)站應(yīng)用 和 移動應(yīng)用。選擇自己想要的應(yīng)用進(jìn)行資料的填寫(審核需要等待大概7天左右),審核通過你將獲得APP ID
3、審核通過獲得相關(guān)接口:get_user_info。
4、下載QQ互聯(lián)相關(guān)的demo http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD 我下載的是 PHP SDK v2.1
5、仔細(xì)觀察sdk我們會發(fā)現(xiàn)它包含有4個文件夾、2個文件,其中最主要的是API文件夾,其余的我覺得都可以忽略不看(你看也沒事),按照這篇文檔一步一步往下進(jìn)行,你就可以實(shí)現(xiàn)登錄的功能。
6、將API文件夾拷貝到你的項(xiàng)目里,至于拷貝到項(xiàng)目的哪個文件夾,只要你能引入就行,看你心情來就可以,前期準(zhǔn)備做好,接下來就是寫代碼了。
7、打開你拷貝到項(xiàng)目里的API文件夾,其中有一個comm文件夾,再次打開comm你就能看到一個叫 inc.php 的家伙,打開它!將上文記在你小本本上的APPID 和 APPKEY填寫到相關(guān)位置,大概形式是這樣的
<?php die('forbidden'); ?>
{"appid":"你的appid","appkey":"你的appkey","callback":"你的網(wǎng)站回調(diào)域","scope":"get_user_info"}
8、代碼如下
<?php /** * Created by PhpStorm. * User: qichao * Date: 2018/1/31 * Time: 下午7:22 */ namespace wechat\controllers; use wechat\common\BaseController; require(__DIR__ . '/../tools/API/qqConnectAPI.php'); //引入QQ互聯(lián)SDK,這是按照我自己項(xiàng)目的路徑引入的。 class QqloginController extends BaseController{ //登錄方法 public function actionQqlogin(){ $qc = new \QC(); $qc->qq_login(); } //這個方法是當(dāng)你通過QQ登錄成功以后想要跳轉(zhuǎn)回來的地址,比如你想登錄成功以后跳轉(zhuǎn)到百度,那你把下文的$url改為百度鏈接即可! public function actionCallback(){ header("Content-type: text/html; charset=utf-8"); /* 這里請根據(jù)你的項(xiàng)目開發(fā)需求(比如獲取登錄用戶的昵稱、頭像、年齡等等),進(jìn)行相關(guān)代碼的開發(fā),具體數(shù)據(jù)獲取方法,請查閱QQ互聯(lián)文檔 $qc = new \QC(); $access_token = $qc->qq_callback(); $openid = $qc->get_openid(); */ $url = "http://wechat.xxx.cn/index.php?r=cms/home"; header("Location:".$url); exit(); } }
至此呢你的整個流程就走完了,簡單吧!??!整個功能流程類似下圖:
如果你在開發(fā)過程中遇到如下問題:
file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
出現(xiàn)這個錯誤的原因很簡單,php配置中的加密模塊并沒有打開
解決方案:1.(windows)php.ini配置文件,定位到下圖藍(lán)色所示的位置,把extension=php_openssl.dll 前面的; 分號去掉
去掉以后重新啟動Apache或者nginx服務(wù)器,再訪問,就不會有這個錯誤了。
2. linux下的PHP,就必須安裝openssl模塊,安裝好了以后就可以訪問了。
相關(guān)文章
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
這篇文章主要介紹了Yii2框架引用bootstrap中日期插件yii2-date-picker的方法,實(shí)例分析了yii2-date-picker插件的具體使用步驟與相關(guān)技巧,需要的朋友可以參考下2016-01-01PHP 中TP5 Request 請求對象的實(shí)例詳解
這篇文章主要介紹了PHP 中TP5 Request 請求對象的實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)代碼幫助大家理解這部分內(nèi)容,需要的朋友可以參考下2017-07-07分享php代碼將360瀏覽器導(dǎo)出的favdb的sqlite數(shù)據(jù)庫文件轉(zhuǎn)換為html
這篇文章主要介紹了分享php代碼將360瀏覽器導(dǎo)出的favdb的sqlite數(shù)據(jù)庫文件轉(zhuǎn)換為html,需要的朋友可以參考下2015-12-12php下實(shí)現(xiàn)農(nóng)歷日歷的代碼
php下實(shí)現(xiàn)農(nóng)歷日歷的代碼...2007-03-03PHPMYADMIN導(dǎo)入數(shù)據(jù)最大為2M的解決方法
PHPMYADMIN還原數(shù)據(jù)庫的時候上傳的最大限制:2,048 KB,數(shù)據(jù)庫稍微大一些就無法處理,要么使用其他的備份還原工具如帝國備份王,要么就分卷導(dǎo)出,那么有沒有辦法還使用PHPMYADMIN來處理呢2012-04-04