【发布时间】:2017-12-12 21:02:51
【问题描述】:
我对使用 Alamofire 还是很陌生,但我提出这个要求是在碰壁。我正在使用 GIDSignIn,并成功为用户获取令牌和刷新令牌,范围为 ["https://www.googleapis.com/auth/youtube.readonly"]。
我正在尝试完成此请求,如site 上的示例所示。该网站说忽略在 iOS 上使用 client_secret,我这样做了。
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
client_id=<your_client_id>&
client_secret=<your_client_secret>&
refresh_token=<refresh_token>&
grant_type=refresh_token
以下是我使用 Alamofire 实现它的方式。我的client_id 是来自 GoogleService-Info.Plist 中 CLIENT_ID 键的值,它是一个以 .apps.googleusercontent.com 结尾的字符串。 refresh_token 似乎也具有我在网上看到的其他示例的正确格式。
let endpoint = "https://www.googleapis.com/oauth2/v4/token"
let parameters = [
"client_id" : client_id,
"refresh_token" : refresh_token,
"grant_type" : "refresh_token"
]
Alamofire.request(endpoint, method: .post,
parameters: parameters,
encoding: JSONEncoding.default)
.responseJSON { (data) in
print("data: \(data)")
let json = JSON(data.result)
}
数据响应是
data: SUCCESS: {
error = "unsupported_grant_type";
"error_description" = "Invalid grant_type: ";
}
不是很成功。我是否需要以不同的方式配置我的请求,或者获得适当的访问/权限来获取令牌?非常感谢!
【问题讨论】:
-
老实说,我也很难过。浏览了您的代码,对我来说似乎是正确的。我知道这不能回答您的问题,但我们决定作为一种解决方法是使用 NodeKit,将其安装为 pod,并通过 Node.JS 文件实现我们的 API 调用。我会密切关注解决方案,如果我找到我的解决方案,我也会标记你。
标签: ios swift oauth-2.0 youtube-api alamofire