如何使用iOS SDK进行授权并使用微信登录?在堆栈溢出或谷歌上似乎没有太多关于此的信息,并且大多数文档都是中文的.
选择回答我自己的问题,因为在堆栈溢出和谷歌上似乎缺乏关于此的信息.我希望其他人也认为它有用.
1.)关注如何设置iOS SDK的Suragch优秀答案:如何将WeChat API添加到Swift项目中?.确保AppDelegate按照实现的方法func onReq(req: BaseReq!)和func onResp(resp: BaseResp!)方法进行设置.
2.)要使登录和授权工作,您必须下载并使用SDK的中文版.奇怪的是,登录所需的一些功能将从英文版中删除.中国SDK这里:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN
3.)首先,我们要授权我们想要与微信一起使用的应用程序.这可以这样做:
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)
Run Code Online (Sandbox Code Playgroud)
这应该返回一个代码,func onResp(resp: BaseResp!)我实现了这样的方法 - 触发通知:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
4.)使用代码,我们现在可以尝试获取openID和accessToken.为此,我们需要使用和构建一个链接appID,appSecret并执行HTTP GET请求.该appID和appSecret是细节,当你注册微信的应用程序,你得到的.像这样的例子:
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"
}
Run Code Online (Sandbox Code Playgroud)
通过此链接,我们可以执行HTTP GET请求并获取JSON中的openID和accessToken.(在Postman中尝试).我不会为此发布代码,但我正在使用Alamofire.
5.)最后,我们可以更进一步,尝试获取微信用户的昵称和个人资料照片.与我们之前创建新链接之前非常相似openID,accessToken我们在之前的步骤中获得了.像这样:
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
}
Run Code Online (Sandbox Code Playgroud)
再次,执行HTTP GET请求,JSON将返回昵称和个人资料照片链接!
加:详细指南:http://www.kekearif.com/how-to-implement-ios-wechat-login/
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |