68323
OAuthを使ったプロジェクトがほぼ完成したので本番環境にデプロイしたのですが、そこでcallback
URLがlocalhostのままだと本番環境ではなくローカルに飛んでしまうことに気づきました。  
本番環境を動かしつつローカルでもOAuthのテストを実行できるようにする方法はないでしょうか？

追記：  
言語はpython（Django)、対象サービスは今の所TwitterとTumblrです
CC BY-SA 4.0
2020-07-05T08:38:33.253
68295
2020-07-07T23:27:39.407
2020-07-07T01:16:06.877
816
816
question
oauth
OAuthをローカルでテストする方法
API連携開発方法の質問かと思いますのでそのように回答します。

一般的に開発環境やローカル環境などの環境でOAuthなどのAPIのテストする場合は、  
開発用専用のサンドボックスやアカウントを作成しておくことが一般的です。

それらを環境ごとに分けて運用します。  
分ける方法はいくつかありますが、環境ごとに違うデータで管理します。  
一般的に言うと  
・環境変数  
・設定ファイル  
・DB  
などでしょう。

また  
開発やローカルのアカウントと本番では実際のアカウントを分けることで、  
もし開発環境で事故が起こった際にも本番環境には影響なく、安定した稼働も期待できます。

安定稼働や開発運用のしやすさから考えて、アカウントは別で運用するようにしましょう。
CC BY-SA 4.0
2020-07-06T00:38:35.037
68323
2020-07-06T00:38:35.037
22665
68295
answer
> callback URLがlocalhostのままだと本番環境ではなくローカルに飛んでしまうことに気づきました。

WEB アプリ から OAuth を行う場合

facebook の場合だと

```

    https://www.facebook.com/v7.0/dialog/oauth?
      client_id={app-id}
      &redirect_uri={"https://www.domain.com/login"}
      &state={"{st=state123abc,ds=123456789}"}
    
```

のように リダイレクト先の url をパラメータで 指定しているはずです。  
お使いの OAuth の部品で この url 生成をどのように行っているのか調べてみてください。

お使いの言語、フレームワーク、ライブラリ等が記載されると より具体的な回答ができると思います。

## 追記に対する追加の解答

Django と Twitter の場合 なら  
[DjangoでTwitter認証アプリケーション](https://qiita.com/Kyou13/items/713a878065df82a0ecc3)  
に書いてあることがそのまま当てはまるのですかね。

通常 callback URL は クライアント側のURLを ライブラリが自動的に  
実行中の WEB サーバーの 情報を利用するはずです。

上記リンク先では リダイレクトURLは

```

    SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/user/top' # リダイレクトURL
    
```

のように 相対パスとして記述しています。  
これによって、配布先のサーバーのURLが変わったとしても リダイレクト先のURLは  
自動的にその 配布先のサーバーになります。

また Twitter 側で リダイレクト先のURLを チェックするため  
リダイレクト先の `URLs` を複数登録することで  
複数のサイト(開発用本番用）で1つの OAuth アプリを利用する事ができます。

[Callback URL not approved by
Twitter](https://stackoverflow.com/questions/51103139/callback-url-not-
approved-by-twitter)
CC BY-SA 4.0
2020-07-06T03:28:30.700
68327
2020-07-07T23:27:39.407
2020-07-07T23:27:39.407
18851
18851
68295
answer