微信之門-授權接口


微信之門-授權接口

更新說明:自定義公眾號APPID功能現已上線, 通過自定義公眾號的APPID, 你可以在微信之門綁定自己的服務號做OAUTH授權, 同時你將得到授權后的 openid 以及微信之門的 wgateid. 查看詳細.

微信打開的網頁,是無法持久存貯 cookies 的,你知道嗎?
那么如何辨識唯一用戶呢?

是的,使用微信服務號!服務號擁有高級接口,可以給讓網站通過微信的OAuth2授權, 獲得用戶的 OpenID, 從而辨別一個唯一用戶。
那么,沒有微信服務號呢?

這就是微信之門誕生的原因。

微信之門已經被調用 42670572 次.

使用非常簡單!
對於任意需要辨識唯一用戶的網站,有兩種方式:

 

1. 使用WgateJs

登錄系統,在“網站管理”中添加您的域名,點擊“生成JS”,將生成的JS,復制在頁面head標簽中即可。
WgateJs將會自動檢測當前網站是否已獲取過wgateid,如果沒有,則自動使用 wgate.php api獲取,並跳轉回當前頁面。
然后使用WgateJs.getWgateid()方法即可獲取當前wgateid。詳細信息請查看WgateJs
WgateJs合適靜態HTML的網頁(如果小游戲等) 或取獲取用戶 openid或者用戶信息。

 

 

2. 使用gate.php接口

只需要一個頁面跳轉即可:

http://www.weixingate.com/gate.php?back=url&force=1

http://www.weixingate.com/#custom_appkey

更新說明:自定義公眾號APPID功能現已上線, 通過自定義公眾號的APPID, 你可以在微信之門綁定自己的服務號做OAUTH授權, 同時你將得到授權后的 openid 以及微信之門的

參數說明:

  • back: 需要跳轉到的 url. 需要使用 urlencode(php寫法,其它語言也有自己的方法).
  • force: 1,強制必須使用微信授權, 非微信打開網站將會出現微信授權錯誤頁面; 0,不強制使用微信授權,使用非微信打開網站,不能授權時將返回空的wgateid. 默認值: 1
  • info: 是否獲取用戶信息。可選值:none,不獲取用戶信息; basic, 獲取用戶信息。會有微信的授權頁面彈出,同一個用戶只授權一次; force, 獲取用戶信息,並且強制顯示授權,可用於更新用戶信息。跳轉返回時不會直接返回用戶信息,需使用 wgate_user 接口獲取,詳情請見下文。
  • appid: 自定義公眾號的appid, 需要在用戶中心的"微信網關"中添加公眾號以及appid, secret等信息.
  • appid_verify: 使用自定義appid時, 需要驗證appid的所有權, 請將 appid和secret 字符串連接, 再以md5加密, 為作該參數的值. appid和secret均需要在"微信網關"中的公眾號信息中設置.

注意: info值為 basic,force 時,為控制潛在的風險,需要綁定該域名的用戶驗證用戶手機號,以加強安全性。請到"用戶中心->設置用戶"中操作。未驗證手機號,將會有每天100次的限制。超限的請求會默認使用none作為info的值。

微信之門會通過微信授權, 拿到用戶的 openid, 並轉換為 wgateid 作為參數跳轉回指定的URL.
返回參數:

  • wgateid: 獲取到的 id
  • wxopenid: 使用自定義appid時, 返回微信用戶與之對應的openid.
  • verify: 校驗碼. 每次的獲取 wgateid 的動作都會生成唯一的一個校驗碼, 網站可以通過這個校驗碼訪問微信之門的校驗接口,驗證這個wgateid 是否是從微信之門發出的. 以防止惡意行為. 校驗碼在120秒內有效.

注意: 使用微信之門的接口, 請先注冊用戶, 並且在"網站管理" 中添加域名(可以查看實時請求流量哦). 未添加的域名, 將會有每天最多100次的請求限制.

 

 

其它接口

驗證接口:

http://www.weixingate.com/verify.php?wgateid=用戶wgateid&verify=校驗碼

驗證接口用於驗證gate.php接口是否真正來自微信之門。返回值為字符串 "true" 或者 "false".

  • wgateid: 必填. 前面獲取到的 wgateid
  • verify: 必填. 前面獲取到的 verify 校驗碼
  • jsonp_callback: 可選. 若需要在JS里通過JSONP方式獲取時,可設置該參數。具體JSONP的使用方法請參考GOOGLE。

獲取用戶信息接口:

http://www.weixingate.com/wgate_user.php?wgateid=用戶wgateid

參數說明:

  • wgateid: wgate接口中返回的用戶wgateid.
  • jsonp_callback: 可選. 若需要在JS里通過JSONP方式獲取時,可設置該參數。具體JSONP的使用方法請參考GOOGLE。

對於wgate接口中info參數使用了顯示授權方式(basic或者force)的wgateid,
可以通過此接口獲取用戶的信息(昵稱,性別,位置等),返回數據為JSON格式。
如需JSONP,請添加jsonp_callback參數,使用方法同verify接口。
如果該用戶ID在系統中不存在,會返回"null"。
新增: 對於JS調用JSONP方式, 可以不傳遞wgateid, 直接調用該接口, 會返回當前用戶的wgateid或者用戶信息(gate.php接口info參數為basic|force時).

如果你只希望在頁面的JS代碼中獲取wgateid,可以使用WgateJs。
它可以幫助您做以下幾件事情:

  • 自動判斷當前頁面是否已獲取 wgateid,如果沒有,則自動使用 wgate.php 接口獲取,並跳轉回當前頁面。
  • 獲取當前 wgateid。
  • 獲取當前 wgate user 信息。

如要使用WgateJs,請在用戶中心“站點管理”中添加您網站的域名,然后點擊“生成JS”,再將生成后的JS放在需要獲取wgateid的頁面head標簽中即可。
更多屬性及方法列表:

  • auto_auth

    獲取不到 wgateid 時,自動使用gate.php接口。可選值: true||false

  • gate_options

    使用 gate.php 授權時的參數,例如:WgateJs.gate_options={force:1}

  • ready

    當WgateJs准備就緒時執行的回調方法。例如:WgateJs.ready=function(){...}

  • getWgateid()

    獲取當前wgateid的方法。如果獲取不到,則返回null。

  • getWgateUser(callback)

    獲取當前用戶信息。通過callback回調返回。例如:WgateJs.getWgateUser(function(user){...})。
    注意:該方法實際使用了wgate_user.php接口,所以需要設置WgateJs.gate_options中{info:"basic"}或者{info:"force"}

示例:

  (function() {
    WgateJs = {};
    WgateJs.auto_auth=true;
    WgateJs.gate_options={force:1,info:"basic"};
    WgateJs.ready=function(){
      var wgateid=WgateJs.getWgateid();
      WgateJs.getWgateUser(function(user){console.info(user)});
    }
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://st.weixingate.com/";
    u=u+'st/10';//注意每個site這里的數字不一樣
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';
    g.defer=true; g.async=true; g.src=u; s.parentNode.insertBefore(g,s);
  })();



      

使用了微信之門后, 你可能會有幾個新的需求:

  • 現有的一批用戶擁有了 wgateid, 但我想對接到新的公眾號系統中, 與用戶的 openid 連接起來.
  • 我想借用微信之門的授權跳轉機制, 使用自己的服務號來獲取用戶openid.
  • 我想將幾個不同的公眾號微網站中的用戶信息打通, 實現更智能的服務.

自定義公眾號APPID的功能 可以幫助你實現這些功能.
通過自定義的APPID(使用你自己的認證服務號), 你可以使用微信之門的接口, 同時獲取一個微信用戶針對你自定義APPID的openid, 以及微信之門的 wgateid.

 

操作方法

  • 注冊微信之門用戶
  • 用戶中心->消息網關 中添加要自定義APPID的公眾號, 並准備填寫 appid, secret
  • 回到微信后台, "開發者中心" 中找到 "網頁授權獲取用戶基本信息" 修改授權回調域名為 "www.weixingate.com"
  • 使用微信之門的 gate.php 接口, 並添加 appid 和 appid_verify (具體請見gate.php接口說明)參數.

接口返回的參數中, wxopenid 就是自定義APPID產生的 openid, wgateid 也會同時返回.

微信中debug比較麻煩, 只能在微信中刷新. 對於使用WgateJs的用戶, 可以使用alert, JSON.stringify(json) 等方法打印變量.

WgateJs會使用cookie 作為wgateid的臨時存貯, 如遇到"不彈出授權頁面"等問題, 可嘗試在微信中訪問: http://www.weixingate.com/clear_cookie.php 清除cookie, 再測試.
或者掃描二維碼使用DEBUG工具:

例如:

http://www.weixingate.com/gate.php?back=http%3A%2F%2Fwww.baidu.com
授權后將會跳轉到:
http://www.baidu.com?wgateid=用戶wgateid&verify=校驗碼

一個典型的應用場景示例:緣分測試 (使用微信掃描打開)

(歡迎將您的案例展示在這里,地址請發送到頁面的聯系郵箱)

微信之門的設計非常簡單, 它能做什么? 不能做什么?

  • 能做: 通過授權獲取唯一用戶的 wgateid, 並通過顯式授權獲取用戶信息。
  • 不能做: 除了能做的其它任何事情

綜上所述, 微信之門適合需要唯一用戶身份辨識需求 不需要依賴微信公眾號的網站..

如果您有什么想法和建議或者意見,歡迎通過下邊的聯系方式提供給我們,一起來完善它以提供更方便的服務。

如有疑問, 請聯系 cnhuye@gmail.com
微信方面的討論 請加群 98749981(驗證問題,請填寫完整的微信接口的域名: api.weixin.qq.com)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM