0

ファラデーを使用して、開発中の 2 つの Web アプリ間で通信しています (背景関連する質問)。クライアントアプリからサーバーアプリへのアップロード/接続の一部としてOAuthトークンを使用しています。

ただし、ヘッダーや action_dispatch ハッシュなどで OAuth トークンが見つからないようです。

助言がありますか?

4

1 に答える 1

1

ここで答えを見つけました: https://github.com/technoweenie/faraday/issues#issue/12

こんにちは、私は同じ問題に遭遇し、ミドルウェアの前に (Faraday::Connection コンストラクター ブロックで) Faraday.default_adapter を使用したことが原因であることがわかりました。

問題がまだ未解決であることを確認したので、これが役立つかもしれません。

から行く:

@connection ||= Faraday::Connection.new(:url => "http://...") do |builder|
  builder.adapter ファラデー.default_adapter
  builder.use CookieAuth
終わり
に

@connection ||= Faraday::Connection.new(:url => "http://...") do |builder|
  builder.use CookieAuth
  builder.adapter ファラデー.default_adapter
終わり
私のために問題を解決しました。

Connection の http メソッドが呼び出されると (Faraday::Connection#run_request にフォールバック)、default_adapter がミドルウェアの前に (Faraday::Adapter::NetHttp#call:45 のように) 実際にリクエストを実行します。変更されたヘッダーはサーバーに送信されません。

それでも、ミドルウェアが (リクエストの後に) 呼び出され、env の request_headers を更新するため、テスト ケースはパスします。

要約すると、実際にリクエストを実行するアダプターの前に、必ず「リクエスト修飾子」ミドルウェアを構成してください。
于 2011-02-02T17:49:52.370 に答える