2016-06-28 16 views

risposta

8

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/

+1

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? –

+0

@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

+1

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. –