ThinkSDK SNS通用開發者外掛

發表於2020-04-04
用途
給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=
http://jaylabs.sinaapp.com大家換成自己的域名。
  • 有一些第三方登入看苗兒的程式碼,成功判斷依賴某一個介面,就沒去驗證,交給大家去研究實現,本外掛只是一個通用的解決方案。更多介面沒時間測試也用不到。就做了2個最常用的
  • sina 微博的授權,有效期返回的時間戳很詭異,拿當前的加上,變成2019年的5年後了,單獨轉換有不是完整的時間戳長度,因此暫時SinaSdk裡手動寫死了1小時後。
  • 大家如果要自己用,一定要將外掛中的程式碼TODO改為自己的邏輯。當然用我OneBlog的單使用者的可以不改。
  • 歡迎大家在我部落格 OneBlog 上提交issue和pull request。比如完成自動後臺續期token
onethink官網附件掛了,只能在這發了。後面是供下載的外掛
ThinkSDK.zip(29.73KB, 下載次數: 20)
回覆

相關文章