我正在尝试从我的 iOS 应用访问受 Google Cloud IAP 保护的资源。
我可以从应用程序登录到我的 Google 帐户并接收 ID 令牌,但是在我想请求的资源的 Authorization 标头中将 ID 令牌设置为不记名令牌时,我收到了带有 HTTP 错误代码 401 的以下响应。
“您的请求有问题。错误代码 13”
我尝试使用 Postman 发送请求,但这也导致了同样的错误。
我使用以下代码从下载的 credentials.plist 文件中设置客户端 ID。
if let path = Bundle.main.path(forResource: "credentials", ofType: "plist") {
let nsDictionary = NSDictionary(contentsOfFile: path)
let clientId = nsDictionary!["CLIENT_ID"] as? String
GIDSignIn.sharedInstance().clientID = clientId
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self;
}
之后我登录谷歌。
if GIDSignIn.sharedInstance().hasAuthInKeychain() {
GIDSignIn.sharedInstance().signInSilently()
} else {
GIDSignIn.sharedInstance().signIn()
}
登录后,我将 idToken 发送到受 Google Cloud IAP 保护的资源。
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
let token = user.authentication.idToken
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = httpMethod
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request, completionHandler: { data, response, error -> Void in
}).resume()
}
我希望得到成功的响应,但目前我收到 HTTP 错误代码 401 以及前面提到的错误消息。