因爲樓主是web開發方向,因此這裏就介紹一下web接入qq登陸的方法,以及和app的qq登陸打通的方法php
0、前提web
已經有一個在工信部備案過的域名的網站,具體能夠查詢工信部的備案頁面(請注意這裏的信息很重要,會影響以後qq登陸申請時的資料填寫)微信
工信部查詢域名備案的網址:http://www.miitbeian.gov.cn/publish/query/indexFirst.action
app
一、去QQ互聯申請應用(騰訊有不少個平臺,網頁的QQ登陸必定是在QQ互聯申請,App的是在騰訊開放平臺)測試
QQ互聯的網址:https://connect.qq.com/網站
1.1 成爲開發者,並用開發者帳號登陸(若是以後要和在騰訊開放平臺申請的App的QQ登陸打通的話,請使用相同的開發者帳號登陸)this
1.2 選擇建立網頁應用code
1.3 填寫基本信息blog
此處填寫的網站名稱必須與工信部域名備案查詢頁面的「網站名稱」一欄填寫同樣的,不然將沒法經過QQ互聯的審覈
token
1.4 完善資料
網站域名須要填寫帶http://或者https://的完整域名
網站回調域,須要填寫完整的回調地址,
好比你的回調頁面是放在 /網站根目錄/qq_oauth/callback.php
那麼網站回調域須要填寫 http://域名/qq_oauth/callback.php
在QQ互聯改版以前是支持填寫多回調域的,好比有一個測試環境 http://dev.example.com 和一個正式環境 http://www.example.com
那麼網站回調域能夠填寫爲 http://www.example.com/qq_oauth/callback.php;http://dev.example.com/qq_oauth/callback.php
二者用分號分隔開,新版的QQ互聯暫時沒有測試過這個功能
提供方建議和工信部域名備案查詢頁面的「主辦單位名稱」一欄填寫同樣的
網站備案號必須與工信部域名備案查詢頁面的「網站備案/許可編號」一欄填寫同樣的
圖標能夠不傳
1.5 完成建立,等待QQ互聯的審覈(這個審覈若是資料和工信部備案的填寫的一致,那麼仍是挺快就能得到經過的,樓主的經驗是1-2天)
二、經過審覈以後,能獲取到app id和app key
這時候,使用官方的sdk,就能快速完成開發(樓主用的是php的sdk,第三方登陸和獲取用戶信息,親測可用)
這裏要提醒的是,配置文件 /API/comm/inc.php 中
「callback」須要和在QQ互聯填寫的網站回調域保持一致(QQ互聯中,若是填寫的是兩個環境的,那麼此處根據環境不一樣填寫一個回調地址)
兩邊回調地址填寫的不一樣會形成調不通
三、若是網站的QQ受權回調已經調通,須要打通App的QQ登陸和網站的QQ登陸,那麼請接着往下作
3.1 如圖中所需資料,發送郵件給 connect@qq.com
網站ICP備案信息截圖便可用工信部備案信息查詢頁面的截圖
3.2 耐心等待回信(這個要看運氣了,快的話當天就能收到回覆,不然可能須要7天)
3.3 收到回信,爲打通App和網站的QQ登陸修改代碼
網站和App的App Id和App Key並未改變,經過兩套獲取到的openid也是不一樣的,只是經過獲取openid時多加一個 unionid=1 的參數,QQ將會多返回unionid,打通的網站和app的unionid是一致的(像微信那樣了),須要根據unionid是否一致來判斷網站來的用戶是否和app來的用戶爲同一個QQ帳戶
若是是使用官方的php的sdk包的,能夠參照以下操做
在callback時候,原來會$qc->get_openid(); 獲取openid,這時候改爲同時獲取openid和unionid
3.3.1 在/API/class/Oauth.class.php中找到public function get_openid()
//-------請求參數列表 $keysArr = array( "access_token" => $this->recorder->read("access_token"), "unionid" => 1 );
//------記錄openid $this->recorder->write("openid", $user->openid); $this->recorder->write("unionid", $user->unionid);
return Array( 'openid' => $user->openid, 'unionid' => $user->unionid ); // return $user->openid;
3.3.2 callback文件中,同時接收openid和unionid
$open_id_result = $qc->get_openid(); $open_id = $open_id_result['openid']; $union_id = $open_id_result['unionid'];
這樣就完成了web端的打通的工做(固然app或者服務端也須要作unionid的相應改動)
補充:
關於app如何打通的問題,這裏作個介紹,qq官方的app的sdk是隻能獲取到access_token和openid的,而不能獲取到unionid
因此app在獲取了access_token以後,須要再發送一個請求到如下地址就可獲取到unionid(綁定了的app和web,app的access_token和web的access_token均可以獲取到相同的unionid,樓主親測有效有效哦)
https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1