剛開始寫該接口的時候一臉茫然,後來發現,說白了就是對微信API的調用。按照步驟,想獲取什麼參數,就發送什麼URL鏈接請求,微信API會返回給你想要的參數。代碼就不貼了,無非就是通過URL,發送請求,然後獲取參數,很容易實現。具體步驟微信官方文檔有,在此也借鑑了一下。
** 微信登錄步驟流程**
1.開放平臺註冊
在進行微信OAuth2.0授權登錄接入之前,首先在微信開放平臺註冊開發者帳號,獲得相應的AppID和AppSecret,申請微信登錄且通過審覈後,方可進行下一步接口調用。2.授權登錄,獲取code
開發者需要配合使用微信開放平臺提供的SDK進行授權登錄請求接入。正確接入SDK後並擁有相關授權域權限後,開發者移動應用會在終端本地拉起微信應用進行授權登錄,微信用戶確認後微信將拉起開發者移動應用,並帶上授權臨時票據(code)。
官方調用示例:
WEB端調用:
發送如下URL請求,微信服務器端會返回對應的code及其它參數
String url = "https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";
請求參數說明:
APPID:爲平臺註冊時獲取的appid
REDIRECT_URI:重定向地址,需要進行UrlEncode
response_type:填code
scope:應用授權作用域,擁有多個作用域用逗號(,)分隔,網頁應用目前僅填寫snsapi_login即可
state:用於保持請求和回調的狀態,授權請求後原樣帶回給第三方。該參數可用於防止csrf攻擊(跨站請求僞造攻擊),建議第三方帶上該參數,可設置爲簡單的隨機數加session進行校驗3.通過code獲取access_token
發送如下URL請求,獲取access_token等參數
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
請求參數說明: APPID: 應用唯一標識,在微信開放平臺提交應用審覈通過後獲得
AppSecret: 應用密鑰AppSecret,在微信開放平臺提交應用審覈通過後獲得
code: 填寫第二步獲取的code參數
grant_type: 填authorization_code(固定,來自於官方文檔)正確的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
返回參數說明:
access_token 接口調用憑證
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 授權用戶唯一標識
scope 用戶授權的作用域,使用逗號(,)分隔
unionid 當且僅當該移動應用已獲得該用戶的userinfo授權時,纔會出現該字段錯誤返回樣例:
{"errcode":40029,"errmsg":"invalid code"}4.通過access_token獲取用戶微信信息
String url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
參數說明:
ACCESS_TOKEN:第三步獲取的access_token
OPENID:第三步獲取的openId返回參數說明:
openId: 用戶標識
nickName: 用戶暱稱
sex: 男1,女2,0未知
country: 國家
province: 省份
city: 城市
headImgUrl: 頭像鏈接
privilegeList: 用戶特權信息
unionId: 全局唯一標識