用途
給ONETHINK整合SNS登入後可以方便 呼叫第三方介面。
提供了
給ONETHINK整合SNS登入後可以方便 呼叫第三方介面。
提供了
- ThinkSDK類庫
- qq和sina的登入和呼叫介面例項
- 一個oauth表和後臺列表方便以後處理繼續授權和使用者繫結檢視的事
- 獨立的thinksdk介面 提供 login(登入)、call(呼叫)、check(檢查)三個方法(夠用了)
- 配置ak、sk和meta驗證和單獨控制2個登入是否啟用
- 一個pageheader方便嵌入登入資源連結
- 安裝好外掛
- 配置外掛裡的meta 通過相關平臺的應用稽核
- 填寫配置裡的ak sk 新增測試賬號
- 用 {:hook('thinksdk', array('action'=>'login'))} 新增登入框` 效果:
- 點選登入後,檢查入庫和顯示
- 要呼叫sns介面的地方先用
$param = array('action'=>'check','type'=>'qq') \Think\Hook::listen('thinksdk', $param); //獲取token $param 是引用的,因此通過$param 是否是false來判斷失敗,返回陣列是該type的token資訊表資料。
然後 再通過這個token資訊,呼叫介面 如 $param2 = array( action'=>'call', 'token'=>$param, 'api'=>'users/show', 'type'=>'sina', ); \Think\Hook::listen('thinksdk', $param2); - call 的返回值是個標準陣列 `array('status'=>1,'data'=>array())``
- 由於框架原因,本來設計的hook函式 引數是引用的,讓使用者可以通過hook來修改某些中間變數,但是那樣的話,呼叫時候這個地方的引數必須是一個變數,而不是像手寫的array()了。可能由於這個原因,老大優化沒有把hook函式引數設為引用參,也沒有返回值。因為Hook::lisen也沒有返回值 所有呼叫call的 時候大家一定要用 \Think\Hook::lisen 當然不需要用引用引數的直接 hook函式好了
- 關於回撥地址,由於各個提供服務的廠商為了保證訪問性,回撥時訪問的地址統一用傳統的getURL引數,因此,我們在登入呼叫oauth的url上也得使用get引數 但是這樣的話要限制url_model引數為原始的相容模式,後來研究,只需要部分引數為get就行了如:
http://jaylabs.sinaapp.com/Home/Addons/execute?addons=ThinkSDK&controller=ThinkSDK&_action=callback&type=
- 有一些第三方登入看苗兒的程式碼,成功判斷依賴某一個介面,就沒去驗證,交給大家去研究實現,本外掛只是一個通用的解決方案。更多介面沒時間測試也用不到。就做了2個最常用的
- sina 微博的授權,有效期返回的時間戳很詭異,拿當前的加上,變成2019年的5年後了,單獨轉換有不是完整的時間戳長度,因此暫時SinaSdk裡手動寫死了1小時後。
- 大家如果要自己用,一定要將外掛中的程式碼TODO改為自己的邏輯。當然用我OneBlog的單使用者的可以不改。
- 歡迎大家在我部落格 OneBlog 上提交issue和pull request。比如完成自動後臺續期token
ThinkSDK.zip(29.73KB, 下載次數: 20)