回答編集履歴
5
修正
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
-
# APIコンソールで設定したclient_secrets.jsonファイルから認証フローオブジェクトを
|
37
|
+
# APIコンソールで設定したclient_secrets.jsonファイルから認証フローオブジェクトを生成。
|
38
38
|
|
39
39
|
flow = Flow.from_client_secrets_file(settings.GOOGLE_OAUTH2_CLIENT_SECRETS_JSON,
|
40
40
|
|
@@ -56,9 +56,9 @@
|
|
56
56
|
|
57
57
|
class AuthorizeView(View):
|
58
58
|
|
59
|
-
#/authorize/
|
59
|
+
#/authorize/ 呼び出し時のview
|
60
60
|
|
61
|
-
# client_secrets.jsonから、OAuth認証を開始するためのURLを
|
61
|
+
# client_secrets.jsonから、OAuth認証を開始するためのURLを作成。
|
62
62
|
|
63
63
|
authurl = flow.authorization_url()[0] # 返値は認証用URLとstateのtupleになっている。
|
64
64
|
|
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
これによりGoogleの認証サーバでユーザ認証が行われ、アクセストークンの取得に必要な認証コード等がパラメータとして付加されたレスポンスがコールバックURIに飛んできます。
|
73
|
+
これによりブラウザ上で認可ページが開き、アカウントを選んで許可すると、Googleの認証サーバでユーザ認証が行われ、アクセストークンの取得に必要な認証コード等がパラメータとして付加されたレスポンスがコールバックURIのviewに飛んできます。
|
74
74
|
|
75
75
|
|
76
76
|
|
@@ -78,7 +78,7 @@
|
|
78
78
|
|
79
79
|
class Oauth2CallbackView(View):
|
80
80
|
|
81
|
-
# コールバックUR
|
81
|
+
# コールバックURI呼び出し時のview
|
82
82
|
|
83
83
|
def get(self, request, *args, **kwargs):
|
84
84
|
|
4
authorization_url() について追記
test
CHANGED
@@ -19,6 +19,8 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
一応手元では、元記事のソースのDjangoORMStorage使ってる部分をJSONファイル保存&xsrfutilを使用しない形に変えた簡易版スクリプトでアップロード成功するところまでこぎつけました。
|
22
|
+
|
23
|
+
(ただし、現状csfr対策が抜けているため、そのままwebサービスとして用いることは難しそう)
|
22
24
|
|
23
25
|
全部ソースにすると文字数なので、さわりだけ記載します。(時間できたらブログかなんかでまとめるかもしれません)
|
24
26
|
|
@@ -52,17 +54,39 @@
|
|
52
54
|
|
53
55
|
```
|
54
56
|
|
57
|
+
class AuthorizeView(View):
|
58
|
+
|
59
|
+
#/authorize/ ディレクトリ呼び出し時のview
|
60
|
+
|
61
|
+
# client_secrets.jsonから、OAuth認証を開始するためのURLを構築。
|
62
|
+
|
63
|
+
authurl = flow.authorization_url()[0] # 返値は認証用URLとstateのtupleになっている。
|
64
|
+
|
65
|
+
# 認証サーバにリダイレクト
|
66
|
+
|
67
|
+
return redirect(authurl)
|
68
|
+
|
69
|
+
```
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
これによりGoogleの認証サーバでユーザ認証が行われ、アクセストークンの取得に必要な認証コード等がパラメータとして付加されたレスポンスがコールバックURIに飛んできます。
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
```
|
78
|
+
|
55
79
|
class Oauth2CallbackView(View):
|
56
80
|
|
57
81
|
# コールバックURL呼び出し時のview
|
58
82
|
|
59
83
|
def get(self, request, *args, **kwargs):
|
60
84
|
|
61
|
-
#
|
85
|
+
# レスポンス中のcodeパラメータを、認証フローに渡し、APIの操作に必要なアクセストークンを獲得。
|
62
86
|
|
63
87
|
flow.fetch_token(code = request.GET.get('code'))
|
64
88
|
|
65
|
-
#
|
89
|
+
# 資格情報を変数に格納。
|
66
90
|
|
67
91
|
credentials = flow.credentials
|
68
92
|
|
@@ -70,7 +94,7 @@
|
|
70
94
|
|
71
95
|
|
72
96
|
|
73
|
-
あとは
|
97
|
+
あとは資格情報(credentials)をつかってYouTube APIを操作します。
|
74
98
|
|
75
99
|
```
|
76
100
|
|
3
修正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
一応手元では、元記事のソースのDjangoORMStorage使ってる部分をJSONファイル保存&xsrfutilを使用しない形に変えた簡易版スクリプトでアップロード成功するところまでこぎつけました。
|
22
22
|
|
23
|
-
全部ソースにすると文字数なので、さわりだけ記載します。(時間できたらブログかなんかでまとめま
|
23
|
+
全部ソースにすると文字数なので、さわりだけ記載します。(時間できたらブログかなんかでまとめるかもしれません)
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -70,9 +70,7 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
|
73
|
+
あとは取り出した資格情報(credentials)をつかってYouTube APIを操作します。
|
74
|
-
|
75
|
-
後はこの資格情報をつかってYouTube APIを煮るなり焼くなりお好きにどうぞ。
|
76
74
|
|
77
75
|
```
|
78
76
|
|
@@ -84,6 +82,4 @@
|
|
84
82
|
|
85
83
|
```
|
86
84
|
|
87
|
-
|
88
|
-
|
89
|
-
|
85
|
+
参照[公式ドキュメント1](https://google-auth-oauthlib.readthedocs.io/en/latest/index.html) [公式ドキュメント2](https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html)
|
2
修正
test
CHANGED
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
これでやっと資格情報(credentials)を取得できました。
|
74
74
|
|
75
|
-
後はこの資格情報をつかってYouTube APIを煮るなり焼くなり
|
75
|
+
後はこの資格情報をつかってYouTube APIを煮るなり焼くなりお好きにどうぞ。
|
76
76
|
|
77
77
|
```
|
78
78
|
|
1
修正
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
認証フロー
|
27
|
+
認証フロー初期設定
|
28
28
|
|
29
29
|
```
|
30
30
|
|