在Swift中使用Google Client Library的用户找不到serverAuthCode

时间:2016-08-19 23:05:08

标签: ios swift azure oauth-2.0 google-client-login

因此我遇到的问题是,我正在尝试使用客户端身份验证与Google API客户端库对Azure进行身份验证。我可以获得刷新,访问和ID令牌,但serverAuthCode是nil。我需要serverAuthCode才能创建HTTP请求以调用Azure身份验证端点。适用于iOS的Azure SDK不支持Google的客户端身份验证(我已经与Microsoft的多位工程师交谈过,他们建议不要使用他们的SDK进行身份验证,因为他们不支持它)。我不知道该做什么,除了试着把我的脑袋包裹在AWS周围。任何帮助?

此外,这是一段代码

func viewController(vc : UIViewController, finishedWithAuth authResult : GTMOAuth2Authentication, error : NSError?) {

    let azureGoogleServerAuthToken = authResult.userData.serverAuthCode

    let azureGoogleIdToken = authResult.parameters["id_token"] as! String

    let request = NSMutableURLRequest(URL: NSURL(string: "https://retip-ios.azurewebsites.net/.auth/login/google")!)
    request.HTTPMethod = "POST"
    let postString = "authorization_code=\(azureGoogleServerAuthToken)&id_token=\(azureGoogleIdToken)"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
        guard error == nil && data != nil else {                                                          // check for fundamental networking error
            print("error=\(error)")
            return
        }

        if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }

        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("responseString = \(responseString)")
    }
    task.resume()

它失败了一个例外,说它每次都找到零。我已将其隔离出来以验证这是导致异常的原因。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在与Azure支持人员直接交谈并与他们合作超过一周以找到解决方案后,看起来好像他们的文档在这个问题上有意模糊,因为他们不支持与Google的客户端身份验证。任何解决方案都需要自定义构建,这意味着通过Azure SDK无法实现这一点。