一尘不染

如何使用iOS SDK通过微信进行授权和登录?

swift

如何使用iOS SDK通过微信进行授权和登录?关于堆栈溢出或google的信息似乎很少,大多数文档都是中文的。


阅读 466

收藏
2020-07-07

共1个答案

一尘不染

选择在这里回答我自己的问题,因为关于堆栈溢出和google的信息似乎缺乏。我希望其他人也觉得它有用。

1.)遵循 Suragch 关于如何设置iOS SDK 出色回答:如何将WeChat
API添加到Swift项目?。确保AppDelegate按照实施的funconReq(req: BaseReq!)func onResp(resp: BaseResp!)方法进行设置。

2.)为了获得登录和授权,您必须下载并使用中文版本的SDK。奇怪的是,登录所需的某些功能已从英文版中删除。中文SDK在这里:[https](https://open.weixin.qq.com/cgi-
bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN)
//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)

这应该向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)
        }
    }

4.)使用代码,我们现在可以尝试获取openID和accessToken。为此,我们需要使用创建链接appIDappSecret并执行HTTPGET请求。该appIDappSecret是当您注册选择与微信的应用程序,你得到的细节。像这样的例子:

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"
    }

通过此链接,我们可以执行HTTP
GET请求openIDaccessToken在JSON中获取和。(在邮递员中尝试)。我不会为此发布代码,但是我正在使用Alamofire。

5.)最后,我们可以更进一步,尝试获取微信用户的昵称和个人资料照片。与之前类似,我们使用openIDaccessToken在之前的步骤中获得的来创建新链接。像这样:

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
    }

再次执行HTTP GET请求,JSON将返回昵称和个人资料照片链接!

加:此处的详细指南:http :
//www.kekearif.com/how-to-implement-ios-wechat-
login/

2020-07-07