前提・実現したいこと
docker-composeとflaskでTwitterと連携した質問サイトを作っています。
rauthのOAuth1Serviceを利用してTwitterのOAuth認証を実装しローカルで動くことを確認し
試しにherokuにデプロイしたら下記のようなエラー遭遇しました。
発生している問題・エラーメッセージ
2020-02-16T13:25:37.223045+00:00 app[web.1]: [2020-02-16 13:25:37,222] ERROR in app: Exception on /oauth/twitter [GET] 2020-02-16T13:25:37.223056+00:00 app[web.1]: Traceback (most recent call last): 2020-02-16T13:25:37.223057+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app 2020-02-16T13:25:37.223057+00:00 app[web.1]: response = self.full_dispatch_request() 2020-02-16T13:25:37.223058+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request 2020-02-16T13:25:37.223059+00:00 app[web.1]: rv = self.handle_user_exception(e) 2020-02-16T13:25:37.223059+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception 2020-02-16T13:25:37.223060+00:00 app[web.1]: reraise(exc_type, exc_value, tb) 2020-02-16T13:25:37.223060+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise 2020-02-16T13:25:37.223061+00:00 app[web.1]: raise value 2020-02-16T13:25:37.223061+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request 2020-02-16T13:25:37.223062+00:00 app[web.1]: rv = self.dispatch_request() 2020-02-16T13:25:37.223062+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request 2020-02-16T13:25:37.223063+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args) 2020-02-16T13:25:37.223064+00:00 app[web.1]: File "app.py", line 67, in oauth_authorize 2020-02-16T13:25:37.223064+00:00 app[web.1]: params={'oauth_callback': url_for('oauth_callback', provider='twitter', _external=True)} 2020-02-16T13:25:37.223064+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/service.py", line 242, in get_request_token 2020-02-16T13:25:37.223065+00:00 app[web.1]: r = self.get_raw_request_token(method=method, **kwargs) 2020-02-16T13:25:37.223065+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/service.py", line 215, in get_raw_request_token 2020-02-16T13:25:37.223066+00:00 app[web.1]: **kwargs) 2020-02-16T13:25:37.223066+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/session.py", line 181, in request 2020-02-16T13:25:37.223067+00:00 app[web.1]: req_kwargs) 2020-02-16T13:25:37.223067+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/oauth.py", line 144, in sign 2020-02-16T13:25:37.223067+00:00 app[web.1]: key = self._escape(consumer_secret) + b'&' 2020-02-16T13:25:37.223068+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/oauth.py", line 35, in _escape 2020-02-16T13:25:37.223068+00:00 app[web.1]: return quote(self._ensure_unicode(s), safe='~').encode('utf-8') 2020-02-16T13:25:37.223069+00:00 app[web.1]: File "/usr/local/lib/python3.6/site-packages/rauth/oauth.py", line 25, in _ensure_unicode 2020-02-16T13:25:37.223070+00:00 app[web.1]: return s.encode('utf-8') 2020-02-16T13:25:37.223070+00:00 app[web.1]: AttributeError: 'NoneType' object has no attribute 'encode' 2020-02-16T13:25:37.223579+00:00 app[web.1]: 10.5.155.200 - - [16/Feb/2020 13:25:37] "GET /oauth/twitter HTTP/1.1" 500 -
該当のソースコード
python
1@app.route('/oauth/twitter') 2def oauth_authorize(): 3 if not current_user.is_anonymous: 4 return redirect(url_for('index')) 5 else: 6 request_token = service.get_request_token( 7 params={'oauth_callback': url_for('oauth_callback', provider='twitter', _external=True)} 8 ) 9 session['request_token'] = request_token 10 return redirect(service.get_authorize_url(request_token[0]))
補足情報(FW/ツールのバージョンなど)
ここに現在実装中のコードをあげておきます。
https://github.com/kkp6421/flask-question
エラーの見当がある方や補足情報が欲しいという場合是非コメントしてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。