質問編集履歴

2

エラーコードの修正

2019/03/28 03:52

投稿

ELA
ELA

スコア12

test CHANGED
File without changes
test CHANGED
@@ -220,6 +220,18 @@
220
220
 
221
221
  ```
222
222
 
223
+ エラーコード
224
+
225
+ Traceback (most recent call last):
226
+
227
+ File "C:\Users\〇〇\Desktop\oauth\index.py", line 5, in <module>
228
+
229
+ from flask import Flask, jsonify, request
230
+
231
+ ModuleNotFoundError: No module named 'flask'
232
+
233
+
234
+
223
235
  コードを書いたというよりかはコピペです。。
224
236
 
225
237
  ほんとに初心者なので真面目にわからないので私のような初心者でもわかるようなわかりやすい解説お願いします。。。

1

コードを追加しました

2019/03/28 03:52

投稿

ELA
ELA

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,225 @@
1
1
  twitterのOauthをpythonで実装したく調べてみた結果、[リンク内容](http://qiita.com/mikan3rd/items/686e4978f9e1111628e9)このサイトを見て色々コードを入れてみたのですが、できなく全く分からなかったので教えてほしいです。
2
2
 
3
+ ```python
4
+
5
+ import os
6
+
7
+ import json
8
+
9
+ from urllib.parse import parse_qsl
10
+
11
+
12
+
13
+ from flask import Flask, jsonify, request
14
+
15
+ from requests_oauthlib import OAuth1Session
16
+
17
+
18
+
19
+ app = Flask(__name__)
20
+
21
+
22
+
23
+
24
+
25
+ consumer_key = "Consumer Key を入力"
26
+
27
+ consumer_secret = "Consumer Secret を入力"
28
+
29
+
30
+
31
+
32
+
33
+ base_url = 'https://api.twitter.com/'
34
+
35
+
36
+
37
+ request_token_url = base_url + 'oauth/request_token'
38
+
39
+ authenticate_url = base_url + 'oauth/authenticate'
40
+
41
+ access_token_url = base_url + 'oauth/access_token'
42
+
43
+
44
+
45
+ base_json_url = 'https://api.twitter.com/1.1/%s.json'
46
+
47
+ user_timeline_url = base_json_url % ('statuses/user_timeline')
48
+
49
+
50
+
51
+
52
+
53
+ # 認証画面(「このアプリと連携しますか?」の画面)のURLを返すAPI
54
+
55
+ @app.route('/twitter/request_token', methods=['GET'])
56
+
57
+ def get_twitter_request_token():
58
+
59
+
60
+
61
+ # Twitter Application Management で設定したコールバックURLsのどれか
62
+
63
+ oauth_callback = request.args.get('oauth_callback')
64
+
65
+
66
+
67
+ twitter = OAuth1Session(consumer_key, consumer_secret)
68
+
69
+
70
+
71
+ response = twitter.post(
72
+
73
+ request_token_url,
74
+
75
+ params={'oauth_callback': oauth_callback}
76
+
77
+ )
78
+
79
+
80
+
81
+ request_token = dict(parse_qsl(response.content.decode("utf-8")))
82
+
83
+
84
+
85
+ # リクエストトークンから認証画面のURLを生成
86
+
87
+ authenticate_endpoint = '%s?oauth_token=%s' \
88
+
89
+ % (authenticate_url, request_token['oauth_token'])
90
+
91
+
92
+
93
+ request_token.update({'authenticate_endpoint': authenticate_endpoint})
94
+
95
+
96
+
97
+ return jsonify(request_token)
98
+
99
+
100
+
101
+
102
+
103
+ # アクセストークン(連携したユーザーとしてTwitterのAPIを叩くためのトークン)を返すAPI
104
+
105
+ @app.route('/twitter/access_token', methods=['GET'])
106
+
107
+ def get_twitter_access_token():
108
+
109
+
110
+
111
+ oauth_token = request.args.get('oauth_token')
112
+
113
+ oauth_verifier = request.args.get('oauth_verifier')
114
+
115
+
116
+
117
+ twitter = OAuth1Session(
118
+
119
+ consumer_key,
120
+
121
+ consumer_secret,
122
+
123
+ oauth_token,
124
+
125
+ oauth_verifier,
126
+
127
+ )
128
+
129
+
130
+
131
+ response = twitter.post(
132
+
133
+ access_token_url,
134
+
135
+ params={'oauth_verifier': oauth_verifier}
136
+
137
+ )
138
+
139
+
140
+
141
+ access_token = dict(parse_qsl(response.content.decode("utf-8")))
142
+
143
+
144
+
145
+ return jsonify(access_token)
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+ @app.route('/twitter/user_timeline', methods=['GET'])
154
+
155
+ def get_twitter_user_timeline():
156
+
157
+
158
+
159
+ access_token = request.args.get('access_token')
160
+
161
+
162
+
163
+ params = {
164
+
165
+ 'user_id': request.args.get('user_id'),
166
+
167
+ 'exclude_replies': True,
168
+
169
+ 'include_rts': json.get('include_rts', False),
170
+
171
+ 'count': 20,
172
+
173
+ 'trim_user': False,
174
+
175
+ 'tweet_mode': 'extended', # full_textを取得するために必要
176
+
177
+ }
178
+
179
+
180
+
181
+ twitter = OAuth1Session(
182
+
183
+ consumer_key,
184
+
185
+ consumer_secret,
186
+
187
+ access_token['oauth_token'],
188
+
189
+ access_token['oauth_token_secret'],
190
+
191
+ )
192
+
193
+
194
+
195
+ response = twitter.get(user_timeline_url, params=params)
196
+
197
+ results = json.loads(response.text)
198
+
199
+
200
+
201
+ return jsonify(results)
202
+
203
+
204
+
205
+ if __name__ == "__main__":
206
+
207
+ port = os.environ.get('PORT', 3333)
208
+
209
+ app.run(
210
+
211
+ host='0.0.0.0',
212
+
213
+ port=port,
214
+
215
+ )
216
+
217
+
218
+
219
+ コード
220
+
221
+ ```
222
+
223
+ コードを書いたというよりかはコピペです。。
224
+
3
- 真面目にわからないので初心者でもわかるようなわかりやすい解説お願いします。。。
225
+ ほんとに初心者なので真面目にわからないので私のような初心者でもわかるようなわかりやすい解説お願いします。。。