私はAlamofireを使い慣れていません。私はこの要求で壁に頭を向けています。私はGIDSignInを使用しており、スコープ["https://www.googleapis.com/auth/youtube.readonly"]を持つユーザのトークンとリフレッシュトークンを正常に取得しています。Swift Alamofireリフレッシュトークンからトークンを取得する要求のエラー
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: ";
}
されていません。リクエストを別の方法で設定する必要がありますか、トークンを取得するための適切なアクセス権が必要ですか?どうもありがとうございます!私は、あなたもURLEncoding.httpBodyいつかエンコードタイプをチェックするために、この方法のように私のコードで疲れ必要になった
正直言って、私はあまりにも困惑しています。あなたのコードを見て、それは私に正しいようです。私はこれがあなたの質問に答えることはできませんが、回避策としてNodeKitを使用し、ポッドとしてインストールし、Node.JSファイルを使ってAPIコールを実装することを決定しています。私は解決策に注意を払うつもりです。私が私のことを理解したら、私もあなたにタグを付けます。 –