很多網(wǎng)站提供用微博和 QQ 賬號(hào)登錄,好處是什么呢?

2 評(píng)論 31115 瀏覽 21 收藏 12 分鐘

小編按:為什么現(xiàn)在多數(shù)網(wǎng)站/App 鼓勵(lì)第三方社交賬戶登陸?看完這篇來(lái)自知乎的技術(shù)帖,相信多數(shù)童鞋會(huì)和小編一樣豁然開朗!

謝邀!8月下旬剛好搞過(guò)OAuth。

首先反對(duì)目前贊同數(shù)超過(guò)1的除了我以外的所有回答。

回答下題主本身的問(wèn)題:很多網(wǎng)站提供用微博和QQ賬號(hào)登錄,好處是什么呢?

好處是當(dāng)你登陸了QQ客戶端或者微博時(shí),用戶可以不輸入賬號(hào)密碼直接點(diǎn)擊(無(wú)需輸入任何數(shù)據(jù))使用綁定的QQ號(hào)或微博賬號(hào)登陸。這個(gè)需求是很大的,我網(wǎng)站設(shè)立初期就有很多人要求我添加這個(gè)功能。

這個(gè)我做過(guò)調(diào)查,確實(shí)很多用戶需要,因?yàn)榈卿浟薗Q客戶端,在那些網(wǎng)站就不需要輸入密碼登陸了。沒調(diào)查就沒有發(fā)言權(quán)。

————————————以下為戰(zhàn)斗部分——————————————

1、@Benjamin 提到的 “誘使用戶誤以為不用注冊(cè)賬號(hào)就能登錄他們的網(wǎng)站了,有利于吸引用戶?!?這個(gè)其實(shí)QQ互聯(lián)官方的要求就是:“點(diǎn)擊登陸后,要直接就是登陸,不能要求設(shè)置賬號(hào)密碼什么的”,不然無(wú)法通過(guò)審核,我前期就是這樣無(wú)法通過(guò)審核,后期在代碼里動(dòng)了點(diǎn)手腳才過(guò)的,審核通過(guò)后又改了回去。

設(shè)置昵稱這個(gè)前期小小麻煩,以后的還是會(huì)很方便的,畢竟以后就不用再輸入了。

2、@DecKen 的說(shuō)法,“所謂的使用微博和QQ賬號(hào)登陸,無(wú)非是網(wǎng)站想獲取你更多的信息(QQ號(hào),微博)”,也是錯(cuò)誤的。OAuth協(xié)議返回給接通微博登陸或者QQ登陸的網(wǎng)站的登陸數(shù)據(jù),只有一串可以叫做openid的字符串,并沒有QQ賬號(hào),當(dāng)然你可以拿著openid等數(shù)據(jù)繼續(xù)通過(guò)騰訊的OpenAPI繼續(xù)獲取更多資料(JSON格式),例如昵稱什么的,但是還是沒有QQ號(hào)。例如get_user_info的API,只能取得如下數(shù)據(jù)。

{

“ret”:0,

“msg”:””,

“nickname”:”Peter”,

“figureurl”:”http://qzapp.qlogo.cn/qzapp/111111/

942FEA70050EEAFBD4DCE2C1FC775E56/30″,

“figureurl_1″:”http://qzapp.qlogo.cn/qzapp/111111/

942FEA70050EEAFBD4DCE2C1FC775E56/50”,

“figureurl_2″:”http://qzapp.qlogo.cn/qzapp/111111/

942FEA70050EEAFBD4DCE2C1FC775E56/100”,

“figureurl_qq_1″:”http://q.qlogo.cn/qqapp/100312990/

DE1931D5330620DBD07FB4A5422917B6/40”,

“figureurl_qq_2″:”http://q.qlogo.cn/qqapp/100312990/

DE1931D5330620DBD07FB4A5422917B6/100”,

“gender”:”男”,

“is_yellow_vip”:”1″,

“vip”:”1″,

“yellow_vip_level”:”7″,

“level”:”7″,

“is_yellow_year_vip”:”1″

}

基本只有昵稱、各種尺寸的頭像的URL,性別,黃鉆相關(guān)的信息。

另外其實(shí)我很奇怪知乎很多完全沒有網(wǎng)站開發(fā)經(jīng)驗(yàn)的人也來(lái)回答這種問(wèn)題。

以下為我QQ登陸數(shù)據(jù)表所儲(chǔ)存數(shù)據(jù),可以看到我只保存了openid,并沒有QQ號(hào),不是不想保存,是沒有API可以獲取到這種資料。

3rd2

openid每個(gè)用戶各不相同,有一一對(duì)應(yīng)的關(guān)系。但是同一用戶,不同的appid獲取到的OpenID是不同。因此是無(wú)法通過(guò)openid逆向工程得出QQ號(hào)的。

當(dāng)然,新浪微博的API權(quán)限就高很多了,甚至可以用那些API,做出Fuubo這樣的東西,所以獲取微博的地址是可以辦到的。當(dāng)然,這也是合理的,因?yàn)槲⒉┑亩ㄎ痪褪俏⑿筒┛?,博客不同于QQ、手機(jī)號(hào)碼這樣的私人聯(lián)系方式,博客在不作隱私設(shè)置的前提下對(duì)網(wǎng)絡(luò)上的任何人都是公開的,因此獲得新浪微博的地址并無(wú)任何不妥。

像我的新浪微博地址:http://weibo.com/lincanbin 我就可以非常大方地放出來(lái)讓你們關(guān)注。

3、所以@段煉 的說(shuō)法,也是錯(cuò)誤的,OAuth協(xié)議只返回openid,并不返回登陸密碼。

4、@安雅 的“直接引入原qq好友關(guān)系”這個(gè)功能是不存在的。

5、@VrWorking 的關(guān)于移動(dòng)終端登陸的說(shuō)法(原文:“如果在手機(jī)或平板客戶端 App,就比較難了。因?yàn)?App 的特點(diǎn)你是看不到地址欄的,因此無(wú)法確認(rèn)這個(gè)登錄頁(yè)面是不是騰訊的。只能看這個(gè) App 是否是官方的,和是否具備足夠的知名度。滿足這兩個(gè)條件下的 App 開發(fā)商不會(huì)、也沒必要去偷取你的賬戶信息(也不絕對(duì),比如 CSDN 腦殘程序員偷偷的保存用戶密碼明文到數(shù)據(jù)庫(kù),結(jié)果城門失火殃及池魚)?!?,其實(shí)騰訊是有另一個(gè)API,可以調(diào)用QQ客戶端登陸的,并非只有Webview一個(gè)方法。不過(guò)目前這個(gè)只支持安卓和IOS,WP等小眾系統(tǒng)是不支持的,如下圖:

3rd3

單點(diǎn)登錄(Single Sign On)

使用了這個(gè)API的,大家比較熟悉的就有“天天愛消除”、“唱吧”等等,不需要使用WebView跳轉(zhuǎn)到一個(gè)網(wǎng)頁(yè)手動(dòng)輸入賬號(hào)密碼登陸,也是非常方便的。不過(guò)SSO登陸這個(gè)API會(huì)啟動(dòng)QQ客戶端,響應(yīng)在一些手機(jī)上相對(duì)比WebView較遲緩。

6、@癡夢(mèng) 說(shuō)的“又當(dāng)又立”,也是錯(cuò)誤的說(shuō)法,首先騰訊的QQ互聯(lián)要求(即“登陸后不需添加任何新的即可直接登陸”)只適用于留言板等應(yīng)用,而論壇之類的應(yīng)用,并不適合。

像各位想保護(hù)隱私嘛,所以騰訊返回給與QQ互聯(lián)互通網(wǎng)站的信息也是有限的,有用的只有一個(gè)opedid和name(昵稱)??墒钦搲癁榱藚^(qū)分各個(gè)用戶,必須有identifie,對(duì)外展示,所以至少需要再設(shè)定一個(gè)昵稱。可是一個(gè)擁有多套登陸系統(tǒng)(必須有多套,最起碼自己得有一套,不然就喪失獨(dú)立性了)的網(wǎng)站,把Openid作為mainkey顯然是不合適的,name的話更不用說(shuō),是絕對(duì)不能作為identifie的——因?yàn)橛泻蟹欠ㄗ址蛘哌^(guò)長(zhǎng)的可能性,也可能重復(fù),有的網(wǎng)站也有提供UID登陸或者郵箱地址登陸的功能,如果直接把QQ昵稱作為username入庫(kù),就可能導(dǎo)致該用戶通過(guò)常規(guī)途徑登陸失敗。

簡(jiǎn)言:把騰訊返回的name作為username入庫(kù)前需要做合法性檢測(cè),所以用戶名是必須在登陸后再次填寫的。除非你打算全站只用QQ這個(gè)登陸系統(tǒng),而不采用自己獨(dú)立的賬號(hào)系統(tǒng)。

(合法性檢測(cè):長(zhǎng)度,不能全為數(shù)字,不包含非法字符,數(shù)據(jù)庫(kù)user表同字段中不存在相同數(shù)據(jù)。)

當(dāng)然,有些網(wǎng)站像知乎,是允許使用已存在的name的并且可以任意修改的,像我叫林燦斌,你也可以在知乎注冊(cè)個(gè)號(hào)叫林燦斌,你QQ昵稱是林燦斌,用QQ登陸后知乎自動(dòng)幫你創(chuàng)建一個(gè)name是林燦斌的號(hào),這樣的網(wǎng)站邏輯就可以不輸入新昵稱直接登陸。而大多數(shù)網(wǎng)站,像大部分論壇、微博……name都必須是唯一的,這樣就不可能實(shí)現(xiàn)直接登陸,有些是歷史遺留問(wèn)題,有些是本意如此。

最后按照知乎答非所問(wèn)的風(fēng)氣,最后應(yīng)該會(huì)有人出來(lái)普及OAuth協(xié)議然后獲得高票贊同吧,建議那些并沒有相關(guān)經(jīng)驗(yàn)的回答者等那種普及知識(shí)的回答出現(xiàn)并且看完再作答。

————————————————————————

最后,其實(shí)QQ的審核規(guī)定還是挺嚴(yán)格的,不過(guò)QQ旗下的Discuz是不需要遵照這個(gè)規(guī)定的。

3rd4

因此很多使用DIscuz的論壇,都這樣,造成了混亂,與騰訊本意相違,這里抄送騰訊反省一下。

————————————————————————

另外還是有好網(wǎng)站的,像我的網(wǎng)站,用QQ或者微博登陸,只需要設(shè)置一個(gè)在我站顯示的昵稱(原因見第6條),并不需要設(shè)置密碼(當(dāng)然也在設(shè)置里提供了設(shè)置密碼的選項(xiàng))。

那些讓那么多人罵娘的網(wǎng)站,多數(shù)是采用了一家不遵守騰訊QQ互聯(lián)規(guī)定的公司旗下的Discuz的程序。

另外OAuth只是方便下次登錄,我覺得注冊(cè)時(shí)設(shè)置賬號(hào)密碼的設(shè)計(jì)對(duì)于站長(zhǎng)來(lái)說(shuō)還是必要的,防止上了賊船下不來(lái),例如:

萬(wàn)一Google公司在國(guó)內(nèi)一夜暴斃,那用Google賬號(hào)登陸而沒要求用戶設(shè)置登陸賬號(hào)密碼的網(wǎng)站,那部分用戶豈不是無(wú)法再次登陸?(讓我們看看2011年出現(xiàn)在知乎的一條問(wèn)題:將網(wǎng)站的登錄系統(tǒng)切換到完全使用Google Account OAuth登錄,利弊各是什么?)

萬(wàn)一某某公司和你是競(jìng)爭(zhēng)對(duì)手,看你做大了眼紅,把你Oauth接口權(quán)限關(guān)閉而你站又沒要求用戶設(shè)置登陸賬號(hào)密碼的網(wǎng)站,那部分用戶豈不是無(wú)法再次登陸?

萬(wàn)一……

來(lái)源:PMTOO ?作者:林燦斌

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 呵呵,學(xué)習(xí)了

    來(lái)自廣東 回復(fù)