希望此篇文章可以對那些沒做過微信登錄的朋友提供一些幫助。接下來我會根據(jù)一些步驟依次講解微信登錄。
1.注冊公司app的賬號獲取app ID。
2.集成sdk吏饿。
3.調(diào)用接口。
對于第一項在此不多講蔬浙,可以找公司人負責猪落,也可以自己到https://open.weixin.qq.com自己申請。
集成sdk可以到剛才的鏈接地址下載最新的sdk畴博。對于集成時的注意項我在此貼出
這里手寫的操作:$(PROJECT_DIR)/項目名稱/
接口調(diào)用
1许布。 SendAuthReq* req =[[SendAuthReq alloc ] init ];
req.scope = @"snsapi_userinfo,snsapi_base";
req.state = @"123" ;
//第三方向微信終端發(fā)送一個SendAuthReq消息結(jié)構(gòu)
[WXApi sendReq:req];
2.發(fā)起請求之后,用戶點擊授權(quán)后绎晃,微信客戶端會被拉起蜜唾,跳轉(zhuǎn)至授權(quán)界面,用戶在該界面點擊允許或取消庶艾,SDK通過SendAuth的Resp返回數(shù)據(jù)給調(diào)用方袁余。數(shù)據(jù)返回后得到所需的code數(shù)據(jù)。
3.第二步:通過code獲取access_token
獲取第一步的code后咱揍,請求以下鏈接獲取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
4.刷新access_token有效期
access_token是調(diào)用授權(quán)關(guān)系接口的調(diào)用憑證颖榜,由于access_token有效期(目前為2個小時)較短,當access_token超時后煤裙,可以使用refresh_token進行刷新掩完,access_token刷新結(jié)果有兩種:1. 若access_token已超時,那么進行refresh_token會獲取一個新的access_token硼砰,新的超時時間且蓬。2. 若access_token未超時,那么進行refresh_token不會改變access_token题翰,但超時時間會刷新恶阴,相當于續(xù)期access_token。
refresh_token擁有較長的有效期(30天)豹障,當refresh_token失效的后冯事,需要用戶重新授權(quán)。
5.請求方法
獲取第一步的code后血公,請求以下鏈接進行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
6.接口說明
檢驗授權(quán)憑證(access_token)是否有效
請求說明
http請求方式: GET
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
7.獲取用戶個人信息(UnionID機制)
接口說明
此接口用于獲取用戶個人信息昵仅。開發(fā)者可通過OpenID來獲取用戶基本信息。特別需要注意的是累魔,如果開發(fā)者擁有多個移動應用摔笤、網(wǎng)站應用和公眾帳號够滑,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用籍茧、網(wǎng)站應用和公眾帳號版述,用戶的unionid是唯一的梯澜。換句話說寞冯,同一用戶,對同一個微信開放平臺下的不同應用晚伙,unionid是相同的吮龄。
請求說明
http請求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
返回說明
正確的Json返回結(jié)果:
{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
然后根據(jù)上面得到的數(shù)據(jù),和公司服務端進行協(xié)商咆疗,提供微信登錄的接口漓帚。到此微信登錄功能基本結(jié)束。