シンプルなアプリを使って Todist リストに Todo を投稿する機能を追加しています。現時点では"error"=>"invalid_grant"
、コードを access_token に交換すると応答が返ってきます。
このコンテキストでも「invalid_grant」が何を参照しているのか正確にはわかりません。私が見つけた他の答えは、さまざまな Google API に関するものです。Todoist APIのドキュメントには、それについての言及はありません。
トークン交換のポスト リクエストは次のとおりです。
uri = URI('https://todoist.com/oauth/access_token')
result = Net::HTTP.post_form(uri, client_id: ENV['TODOIST_CLIENT_ID'], client_secret: ENV['TODOIST_CLIENT_SECRET'], code: params[:code])
json_body = JSON.parse(result.body) # <- prints error
これを理解して解決するための助けは大歓迎です。
アップデート
Takahiko Kawasaki の回答を読んだ後、リクエストを次のように更新しましたが、同じエラー メッセージが表示されます。
uri = URI('https://todoist.com/oauth/access_token')
data = {
:client_id => ENV['TODOIST_CLIENT_ID'],
:client_secret => ENV['TODOIST_CLIENT_SECRET'],
:code => params[:code],
:grant_type => 'authorization_code',
}
result = Net::HTTP.post_form(uri, data)
json_body = JSON.parse(result.body)