網(wǎng)頁接入釘釘掃碼登錄

前言

有時(shí)候我們做了一些網(wǎng)頁嚣潜,希望只有某些人才能看的話椅贱,可以搞一個(gè)釘釘掃碼登錄,接入也比較簡(jiǎn)單计技,下面記錄下接入的過程山橄。

流程

我們先看看官方的文檔:釘釘接入文檔
梳理一下官方的流程:
1、先跳去一個(gè)掃碼網(wǎng)頁睡雇,配置好參數(shù)就能跳,然后用用戶去掃碼它抱;
2、掃碼成功后混移,會(huì)自動(dòng)跳轉(zhuǎn)回你之前設(shè)置的頁面蜘腌,并在鏈接上帶一個(gè)code的參數(shù);
3撮珠、利用appkey和秘鑰去獲取token金矛,這個(gè)token有效期為2小時(shí);
4娶耍、利用第2步獲取的code和第3步獲取的token饼酿,去請(qǐng)求接口,得到一個(gè)持久碼想鹰;
5药版、利用第4步獲取的持久碼再去請(qǐng)求接口,得到一個(gè)SNS_TOKEN槽片;
6、利用第5步獲取的SNS_TOKEN再去請(qǐng)求接口碌廓,得到userInfo的信息剩盒,然后解析就能拿到用戶昵稱。
流程很簡(jiǎn)單,就是按著文檔說的股淡,一步一步往下調(diào)接口就行廷区。

坑點(diǎn)

如果是在網(wǎng)頁直接調(diào)接口的話,會(huì)存在跨域的問題埠帕。所以得搞一個(gè)接口做轉(zhuǎn)發(fā)玖绿。
我寫了個(gè)PHP

<?php
// 指定允許其他域名訪問    
header('Access-Control-Allow-Origin:*');    
// 響應(yīng)類型    
header('Access-Control-Allow-Methods:POST');    
// 響應(yīng)頭設(shè)置    
header('Access-Control-Allow-Headers:x-requested-with,content-type'); 

$type=$_GET['type'];
if($type==""){
    echo "請(qǐng)輸入type";
}else if($type==1){
     echo curl_get_https("https://oapi.dingtalk.com/sns/gettoken?appid={{APP_ID}}&appsecret={{KEY}}");
}else if($type==2){
    if($_GET['code']==""||$_GET['token']==""){
        echo "請(qǐng)輸入code和token";
    }else{
        $data = array ('tmp_auth_code' => $_GET['code']);
        $data_string = json_encode($data);
        echo curl_post_https("https://oapi.dingtalk.com/sns/get_persistent_code?access_token=".$_GET['token'],$data_string);
    }
 }else if($type==3){
    if($_GET['code']==""||$_GET['token']==""||$_GET['openid']==""){
        echo "請(qǐng)輸入code斑匪、token、openid";
    }else{
        $data = array ('openid' => $_GET['openid'],'persistent_code' => $_GET['code']);
        $data_string = json_encode($data);
        echo curl_post_https("https://oapi.dingtalk.com/sns/get_sns_token?access_token=".$_GET['token'],$data_string);
    }
 }else if($type==4){
    if($_GET['token']==""){
        echo "請(qǐng)輸token";
    }else{
        echo curl_get_https("https://oapi.dingtalk.com/sns/getuserinfo?sns_token=".$_GET['token']);
    }
 }else{
    echo "沒有獲取內(nèi)容";
}

function curl_post_https($url,$data_string){ // 模擬提交數(shù)據(jù)函數(shù)
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    // 線下環(huán)境不用開啟curl證書驗(yàn)證, 未調(diào)通情況可嘗試添加該代碼
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $res = curl_exec($ch);
    curl_close($ch);  
     return $res; // 返回?cái)?shù)據(jù),json格式
}

function curl_get_https($url){
    $curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);  // 從證書中檢查SSL加密算法是否存在
    $tmpInfo = curl_exec($curl);     //返回api的json對(duì)象
    //關(guān)閉URL請(qǐng)求
    curl_close($curl);
    return $tmpInfo;    //返回json對(duì)象
}
?>

OK贪惹,通過上面的接口轉(zhuǎn)發(fā)后奏瞬,前端就可以按照上面的接口去調(diào)了泉孩,很簡(jiǎn)單棵譬。

其他

如果按照正常的邏輯呢,是要求2小時(shí)token過期曼尊,然后要重新掃碼登錄的脏嚷。但我們的需求不用那么嚴(yán)格父叙,只要他掃碼過肴裙,登錄成功蜻懦,驗(yàn)證了用戶身份宛乃,就保存下狀態(tài)征炼,下次再進(jìn)入該網(wǎng)頁的時(shí)候躬贡,就不用再掃碼了。流程圖如下:


OK,大概就這樣檐蚜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肋坚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诲泌,老刑警劉巖铣鹏,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異葵第,居然都是意外死亡合溺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門哮奇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鼎俘,你說我怎么就攤上這事】碧欤” “怎么了棍丐?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵歌逢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我秘案,道長(zhǎng),這世上最難降的妖魔是什么阱高? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任赤惊,我火速辦了婚禮,結(jié)果婚禮上未舟,老公的妹妹穿的比我還像新娘。我一直安慰自己员串,他們只是感情好昼扛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渺鹦,像睡著了一般斯稳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挣惰,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音珍语,去河邊找鬼。 笑死是偷,一個(gè)胖子當(dāng)著我的面吹牛募逞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播放接,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼纠脾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了苟蹈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤渺绒,失蹤者是張志新(化名)和其女友劉穎菱鸥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體采缚,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扳抽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年殖侵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楞陷。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡固蛾,死狀恐怖艾凯,靈堂內(nèi)的尸體忽然破棺而出趾诗,到底是詐尸還是另有隱情,我是刑警寧澤恃泪,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布情连,位于F島的核電站蒙具,受9級(jí)特大地震影響禁筏,放射性物質(zhì)發(fā)生泄漏篱昔。R本人自食惡果不足惜州刽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奶栖。 院中可真熱鬧宣鄙,春花似錦冻晤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹉胖。三九已至甫菠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拂苹,已是汗流浹背痰洒。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工丘喻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泉粉,地道東北人嗡靡。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓歉井,卻偏偏與公主長(zhǎng)得像哈误,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容