Come si effettua l'autorizzazione e l'accesso con WeChat tramite l'SDK iOS? Sembra che non ci siano molte informazioni a riguardo su overflow dello stack o su google e la maggior parte dei documenti sono in cinese.Come si effettua l'autorizzazione e l'accesso con WeChat tramite l'SDK iOS?
risposta
Scegliere di rispondere alla mia domanda qui perché sembra esserci mancanza di informazioni su questo su overflow dello stack e su google. Spero che anche gli altri lo trovino utile.
1.) Seguire risposta eccellente di Suragch su come impostare l'SDK per iOS: How to add the WeChat API to a Swift project?. Assicurarsi che AppDelegate
sia configurato come descritto con i metodi func onReq(req: BaseReq!)
e func onResp(resp: BaseResp!)
implementati.
2.) Per ottenere il login e l'autorizzazione di lavoro DEVI scaricare e utilizzare la versione cinese dell'SDK. Curiosamente alcune delle funzioni necessarie per il login sono state rimosse dalla versione inglese. SDK cinese qui: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN
3.) In primo luogo vogliamo autorizzare l'app che vogliamo utilizzare con WeChat. Questo può essere fatto in questo modo:
let req = SendAuthReq()
req.scope = "snsapi_userinfo" //Important that this is the same
req.state = "co.company.yourapp_wx_login" //This can be any random value
WXApi.sendReq(req)
Questo dovrebbe restituire un codice per func onResp(resp: BaseResp!)
ho implementato il metodo in questo modo - innescando una notifica:
func onResp(resp: BaseResp!) {
if let authResp = resp as? SendAuthResp {
if authResp.code != nil {
let dict = ["response": authResp.code]
NSNotificationCenter.defaultCenter().postNotificationName("WeChatAuthCodeResp", object: nil, userInfo: dict)
} else {
let dict = ["response": "Fail"]
NSNotificationCenter.defaultCenter().postNotificationName("WeChatAuthCodeResp", object: nil, userInfo: dict)
}
} else {
let dict = ["response": "Fail"]
NSNotificationCenter.defaultCenter().postNotificationName("WeChatAuthCodeResp", object: nil, userInfo: dict)
}
}
4.) Con il codice ora possiamo cercare di ottieni l'openID e l'accessToken. Per fare questo abbiamo bisogno di costruire un collegamento usando lo appID
, appSecret
e fare una richiesta HTTP GET. I numeri appID
e appSecret
sono dettagli che ottieni quando registri l'app con WeChat. Esempio in questo modo:
private let appID = "somecode2132113"
private let appSecret = "someappsecret213123"
private let accessTokenPrefix = "https://api.weixin.qq.com/sns/oauth2/access_token?"
private func buildAccessTokenLink(withCode code: String) -> String {
return accessTokenPrefix + "appid=" + appID + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code"
}
Con questo collegamento si può effettuare una richiesta HTTP GET e ottenere il openID
e accessToken
in JSON. (Provalo in Postman). Non posterò il codice per questo, ma sto usando Alamofire.
5.) Infine possiamo fare un ulteriore passo avanti e provare a ottenere il nickname e la foto del profilo dell'utente di WeChat. Molto simile a prima abbiamo creato un nuovo collegamento utilizzando il openID
e accessToken
che abbiamo ottenuto nel passaggio precedente. In questo modo:
private let userInfoPrefix = "https://api.weixin.qq.com/sns/userinfo?"
private func buildUserInfoLink(withOpenID openID: String, accessToken: String) -> String {
return userInfoPrefix + "access_token=" + accessToken + "&openid=" + openID
}
Anche in questo caso, eseguire una richiesta GET HTTP e JSON restituirà il link fotografico nickname e profilo!
più: guida dettagliata qui: http://www.kekearif.com/how-to-implement-ios-wechat-login/
Ho provato con le misure, ma quando sto navigato per app wechat di autorizzazione, continuo a ricevere il messaggio: ** Oops! Qualcosa è andato storto: (** Ho controllato i log in Xcode e non ottengo altro se non il codice di errore -2 nell'oggetto risposta.Tutti i suggerimenti? –
@KushalAshok hai controllato la pagina del portale di wechat? avere le credenziali corrette, l'ID app ecc., visto che quello che vedi è un errore dalla loro fine. – Kex
Ho controllato l'account di chat e ho imparato che devo pagare 300 CNY per un controllo, post che l'API di accesso sarà abilitata per il mio App. –