2016-09-06 7 views
1

HerokuのWebサイトを別のWebサイトからユーザーのショッピングデータを取得するAPIに接続しようとしています。HerokuカスタムドメインのAPI、ホスト名がDNSキャッシュにない

コマンドラインとブラウザを使用してAPIに正常に接続できます。私は生産で同じことをすることはできません。私がそれをしようとすると、ログにエラーが表示されますHostname was NOT found in DNS cache。私は私のカスタムドメインのOauthのた​​めに登録されているためである疑いがある

はリダイレクトではなく、私のHerokuのドメイン。

Oauthリダイレクト用の追加ドメインを設定することを許可されています。 API管理者にアドオンドメインの設定を依頼する前に、誰かがこれが私の問題の原因であることを確認したり拒否したり、Herokuドメインを設定して解決することができれば感謝します。私のカスタムドメインを排他的に使用できる方法があれば、より簡単に思えます。

ありがとうございました!私は以下のいくつかの詳細を提供しました。

成功したAPIコマンドラインを介して通話やブラウザ

のOAuth2ログインへの直接ユーザー(私は、Webブラウザでこの部分を行う):にリダイレクト https://www.example.com/shop/oauth2/?response_type=code&client_id={client_id}&state={some_unique_state}&redirect_uri={your_site_url}

成功したユーザのログイン、ブラウザ: {your_site_url}?code={auth code}&state={some_unique_state echoed back}

次に、foのリダイレクトURLで提供されているコードを使用しますcurlコマンドを発している。

は、トークンとJSESSIONID取得: curl -v -X POST -u {client_id}:{client_secret} -H "Content-Length: 0" "https://www.example.com/api/v2.0/token?code={code}"

JSESSIONIDとトークンは、次のcurlコマンドで使用されています。私は成功したのOAuth2のログインを介してユーザーを取得することができ、生産で同じことを行うには curl -H "Authorization: Bearer {token}" "https://www.example.com/api/v2.0/user/cart;jsessionid={jsessionid}?flags=true"

失敗した試行(Herokuのを、レール)製造において

と生成:

データを取得します認証コード。私はトークンとjsessionidをコントローラメソッドのcurlコマンドで取得しようとすると、DNSエラーメッセージが表示されます。私はそのコントローラメソッドで単純なタスク(レンダリングhttp://www.google.com)のカールが動作することを確認しました。私はそのメソッドで必要な変数をすべて正常にアセンブルしていることも確認しました。プロダクションのコントローラメソッドを使用してローカルマシンのコマンドラインから実行した場合とまったく同じcurlコマンドが失敗します。

ありがとうございました。私はAPIの統合に比較的新しいので、間違いなく基本的なものを逃してしまう可能性があります。

答えて

0

問題は、APIチームがHerokuから送信されたため、自分のIPアドレスをブロックしていたことでした。この会社は、セキュリティ上の理由から、クラウドプロバイダーのIPアドレスをブロックします。だから私は静的なAPIを取得し、それをホワイトリストに登録するようにチームに依頼しなければなりませんでした。

私はHerokuのProximoで静的IPを取得しました。私はその後、RestClientを使用して、静的IPを呼び出して、APIに要求しなければなりませんでした。

RestClient.proxy = ENV["PROXIMO_URL"] if ENV["PROXIMO_URL"] 
retrieve_rest = RestClient::Request.execute(
    method: :get, 
    :url => the_url, 
    :headers => {"Authorization": "Bearer #{token}"}) 
    {|response, request, result| response } 
result = JSON.parse(retrieve_rest) 
:私のコントローラメソッドで

関連する問題