說說微信掃碼登陸

1、OAuth2.0

OAuth(開放受權)是一個開放標準,容許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。

  容許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數據。每個令牌受權一個特定的網站(例如,視頻編輯網站)在特定的時段(例如,接下來的2小時內)內訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth容許用戶受權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不須要分享他們的訪問許可或他們數據的全部內容。html

2、準備工做

咱們這裏主要模擬使用OAuth2.0,用戶經過掃描咱們網頁應用的二維碼並進行受權登陸來獲取用戶的基本信息的過程。
  詳情接口:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
  咱們這裏主要講的是網站(Web)應用,網站應用微信登陸是基於OAuth2.0協議標準構建的微信OAuth2.0受權登陸系統(即上面的協議)。在微信客戶端受權登陸(獲取用戶信息)的能夠查看:http://www.cnblogs.com/0201zcr/p/5131602.html。在進行微信OAuth2.0受權登陸接入以前,在微信開放平臺註冊開發者賬號,並擁有一個已審覈經過的網站應用,並得到相應的AppID和AppSecret,申請微信登陸且經過審覈後,可開始接入流程。

3、註冊開發者帳號

提交審覈便可,等微信審覈經過,咱們便可得到咱們須要的網頁應用的appid和AppSecret,並配置後回調的域名了(這三樣是咱們開發所必須的)。

4、受權流程

微信OAuth2.0受權登陸讓微信用戶使用微信身份安全登陸第三方應用或網站,在微信用戶受權登陸已接入微信OAuth2.0的第三方應用後,第三方能夠獲取到用戶的接口調用憑證(access_token),經過access_token能夠進行微信開放平臺受權關係接口調用,從而可實現獲取微信用戶基本開放信息和幫助用戶實現基礎開放功能等。
  微信OAuth2.0受權登陸目前支持authorization_code模式,適用於擁有server端的應用受權。該模式總體流程爲:json

1. 第三方發起微信受權登陸請求,微信用戶容許受權第三方應用後,微信會拉起應用或重定向到第三方網站,而且帶上受權臨時票據code參數;
2. 經過code參數加上AppID和AppSecret等,經過API換取access_token;
3. 經過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操做。

圖片描述

5、獲取網頁的二維碼

當咱們經過微信的認證,獲取到了appid和AppSecret,並配置了回調的域名。咱們就已經能夠獲取屬於咱們網頁的二維碼了,獲取的方式很簡單,只需打開一個微信的連接,加上咱們的appid和回調域名便可在網頁上面打開二維碼,用戶用微信客戶端掃碼並受權登陸以後即會跳轉到咱們配置的回調域名下。注意:api

一、這裏填寫的是域名(是一個字符串),而不是URL,所以請勿加http://等協議頭;
二、受權回調域名配置規範爲全域名,好比須要網頁受權的域名爲:www.qq.com,配置之後此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 均可以進行OAuth2.0鑑權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com沒法進行OAuth2.0鑑權

6、請求url說明

第三方使用網站應用受權登陸前請注意已獲取相應網頁受權做用域(scope=snsapi_login),則能夠經過在PC端打開如下連接:數組

https://open.weixin.qq.com/co...安全

返回說明
  用戶容許受權後,將會重定向到redirect_uri的網址上,而且帶上code和state參數
  若用戶禁止受權,則重定向後不會帶上code參數,僅會帶上state參數微信

7、獲取用戶信息

假如前面已經得到code。咱們能夠經過code參數去獲取用戶openid和access_token,進而得到用戶的信息。
經過code參數獲取access_token
https://api.weixin.qq.com/sns...微信開發

參數說明app

參數        是否必須        說明
appid         是         應用惟一標識,在微信開放平臺提交應用審覈經過後得到
secret        是         應用密鑰AppSecret,在微信開放平臺提交應用審覈經過後得到
code          是         填寫第一步獲取的code參數
grant_type    是         填authorization_code

7、(附)經過access_token獲取用戶的基本信息

獲取的前提條件學習

access_token有效且爲超時;
    微信用戶已受權給第三方應用帳號相應接口做用域(scope)【在二維碼生成鏈接那裏填寫】

參數        說明
openid        普通用戶的標識,對當前開發者賬號惟一
nickname      普通用戶暱稱
sex           普通用戶性別,1爲男性,2爲女性
province      普通用戶我的資料填寫的省份
city          普通用戶我的資料填寫的城市
country       國家,如中國爲CN
headimgurl    用戶頭像,最後一個數值表明正方形頭像大小(有0、4六、6四、9六、132數值可選,0表明640*640正方形頭像),用戶沒有頭像時該項爲空
privilege     用戶特權信息,json數組,如微信沃卡用戶爲(chinaunicom)
unionid       用戶統一標識。針對一個微信開放平臺賬號下的應用,同一用戶的unionid是惟一的。

寫在最後

最近在鼓搗微信開發,整理了一些筆記,整個思路走下來 涉及很多後臺的知識,還需努力學習,但願分享的東西能夠對你們有所幫助網站

相關文章
相關標籤/搜索