我对使用Alamofire非常陌生,而且我正在用这个要求撞到墙上。我正在使用GIDSignIn,并成功获得用户的令牌和刷新令牌,范围为[" https://www.googleapis.com/auth/youtube.readonly"]。
我试图完成此请求,如site上的示例所示。该网站表示要忽略使用client_secret
for iOS,我这样做。
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: ";
}
不是非常成功。我是否需要以不同方式配置我的请求,或获得获取令牌的适当访问/权限?非常感谢你!
答案 0 :(得分:3)
Alamofire.request(endpoint, method: .post,
parameters: parameters,
encoding: URLEncoding.httpBody)
答案 1 :(得分:1)
我已经厌倦了这样的代码,你还需要检查某些时候的编码类型 URLEncoding.httpBody 希望它可以帮助
Public Sub RunMethod()
Dim code As String
code = "Public Function testMethod()" & vbNewLine & _
vbTab & "MsgBox """ & Time & """" & vbNewLine & _
"End Function"
If Not checkProcName("testMethod") Then
ThisWorkbook.VBProject.VBComponents("DynamicFunctions").CodeModule.AddFromString code
End If
Application.Run "testMethod"
End Sub