当前位置: 首页 > 面试题库 >

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

柳威
2023-03-14
问题内容

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


问题答案:

选择在这里回答我自己的问题,因为关于堆栈溢出和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/



 类似资料:
  • 首先,我没有任何使用SAML(版本2)的经验。 我被要求研究如何使现有站点(具有带有用户名和密码页面的正常登录页面)为SAML的SSO做好准备。我们可以使用一些工具来执行此操作。因此,我认为实现SSO部分并不困难。 但是,我不清楚如何管理授权。系统(网站)正在使用授权权限来确定用户是否能够访问某些部分,如果他能够访问,则确定他拥有的正确类型(查看,创建或编辑)。这些权限由系统本身的管理员分配给每个

  • 我的问题是:为了实现授权,是否有一种简单的方法来更改Olingo JPA处理器以在默认情况下连接表和过滤实体?这将需要我能够传入帐户过滤,也限制所有的结果。 我也尝试过这里描述的预处理和后处理。但是,过滤需要在查询中进行,而不是在返回结果之后,因为JPA查询将返回太多的结果,并且转换数千个对象的时间长且成本高。 到目前为止,我已经实现了一个CustomoDataJPaprocessor。但是,现在

  • 我想写一个应用程序,允许与数据交互的两种RESTful形式;常规REST CRUDendpoint和Web-UI。 过去,我在JS中实现了UI的大部分功能,这将调用常规的RESTendpoint。这很好,但对于这个应用程序,我想使用Qute来执行生成页面内容的大部分基本功能。但是,为了正确地管理endpoint并确保正确的RBAC控制,我需要通过cookie而不是普通的头来访问JWT。这似乎是可能

  • 我的auth服务器执行以下操作- > 让用户通过第三方oauth提供商登录,比如谷歌,或者让用户使用用户名和密码在我们的服务器上创建他的帐户,并生成令牌。 因此,当用户使用外部oauth(如google)登录时,我只需存储令牌,并将相同的(google)令牌传递给我的UI应用程序,以访问资源api服务器。我有一个验证令牌和允许api访问的身份验证过滤器。 null

  • 1. 进入客服端微信对接页面 2. 选择微信平台授权对接 3. 使用公众平台绑定的管理员个人微信号扫描二维码进行授权 4.授权完成后,返回到微信对接页面,勾选接待组 5.接待组勾选完成后,15分钟左右生效

  • 我有一个移动(本机)和Web应用程序(SPA),它与后端微服务(在核心2.0中开发)对话,以进行身份验证/授权和其他与域相关的功能,该功能已使用Opendi的配置。这两个应用程序都获得了访问令牌。我遇到的问题是,所有微服务都应该接受无记名访问令牌和登录用户的身份验证/授权(中央身份验证服务),在身份验证微服务中生成的访问令牌(开放身份验证2.*)。那么,我在微服务中缺少哪些更改,其中REST AP