質問編集履歴

1

内容の修正

2022/01/04 02:40

投稿

msd2288
msd2288

スコア1

test CHANGED
@@ -1 +1 @@
1
- pythonでgoogleAPIを使用するときのアクセストークンのリフレッシュについて
1
+ pythonでgoogleAPIを使用するときのアクセス方法について
test CHANGED
@@ -2,37 +2,45 @@
2
2
 
3
3
 
4
4
 
5
- pythonを使ってgoogleAPIを活用したアプリを作っています。(Gmailやgoogleカレンダーとの連携など)
5
+ pythonを使ってgoogleAPIを活用したアプリを作っています。目的は個人利用です。(Gmailやgoogleカレンダーとの連携など)
6
6
 
7
- googleAPIにアクセスするときに、クセストークの有効期限が切れた後のークンリフレッシュがうまく動かずに困ってい
7
+ googleAPIにアクセスする方法してはOAuth2.0クライアントを使用しているのでが、
8
8
 
9
- アクセストークンの有効期限あるちは正しく動作していたの、最初は気づかなったのでが、
9
+ GCPプロジェクトが公開ステータス[テスト]かつ、ユーザーの種類[外部]の設定だと一週間程度でアクセストークンが切れてしまようです
10
10
 
11
+ そこでサービスアカウントでのログインを試みたのですが、こちらはgoogle Workspaceの登録がないとできないようです。
12
+
13
+ 目的はあくまで個人利用なので、google workspaceなどの有料サービスへの登録はできれば控えたいと考えています。
14
+
15
+ そこで以下2点について、質問があります。
16
+
17
+ * OAuth2.0クライアントを使用してアクセストークンが切れずにアクセスする方法はないか?
18
+
19
+ * サービスアカウントは必ずgoogle workspaceの登録が必要なのか?
20
+
21
+ * それ以外でgoogleAPIを個人的に利用する場合のベストプラクティスはあるのか?
22
+
11
- 一週間程度時間がたっからエラー出てるこに気づきした、、
23
+ ぜひみなさんの知恵を貸していただければ思いす。
24
+
25
+ よろしくお願いします!!
12
26
 
13
27
 
14
28
 
15
- 該当ソースコードの「#有効期限が切れている場合にトークンをリフレッシュ」以下の動作がうまくいってないと思うのですが、
16
-
17
- なかなか解決できないため、みなさんの知恵を貸していただければと思います。
18
-
19
- よろしくお願いします。
20
-
21
-
22
-
23
- ### 発生している問題・エラーメッセージ
29
+ ### 発生している問題・エラーメッセージ(OAuthクライアント使用時)
24
30
 
25
31
 
26
32
 
27
33
  ```
28
34
 
35
+ google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.',
36
+
29
- google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', {'error': 'invalid_grant', 'error_description': 'Token has been expired or revoked.'})
37
+ {'error': 'invalid_grant', 'error_description': 'Token has been expired or revoked.'})
30
38
 
31
39
  ```
32
40
 
33
41
 
34
42
 
35
- ### 該当のソースコード(一部抜粋)
43
+ ### 該当のソースコード(OAuthクライアント使用時)
36
44
 
37
45
 
38
46
 
@@ -86,15 +94,43 @@
86
94
 
87
95
 
88
96
 
97
+ ### 発生している問題・エラーメッセージ(サービスアカウント使用時)
89
98
 
99
+
100
+
101
+ ```
102
+
103
+ googleapiclient.errors.HttpError: <HttpError 400 when requesting https://gmail.googleapis.com/gmail/v1/users/me/messages?
104
+
105
+ maxResults=100&q=After%3A2021-12-05+Before%3A2022-01-04+From%3Aalert%40shop-bell.com+To%3Axxxxxx%40gmail.com+&alt=json
106
+
107
+ returned "Precondition check failed.". Details: "[{'message': 'Precondition check failed.', 'domain': 'global', 'reason': 'failedPrecondition'}]">
108
+
109
+ ```
110
+
111
+
112
+
113
+ ### 該当のソースコード(サービスアカウント使用時)
114
+
115
+
116
+
117
+ ```python
118
+
119
+ # サービスアカウントでの認証
120
+
121
+ credentials = service_account.Credentials.from_service_account_file('service_credentials.json')
122
+
123
+ creds = credentials.with_scopes(SCOPES)
124
+
125
+
126
+
127
+ ```
90
128
 
91
129
 
92
130
 
93
131
  ### 補足
94
132
 
95
-
96
-
97
- 関係あるかわかりませんが、googleAPIのスコープを一応載せておきます。
133
+ * googleAPIのスコープ
98
134
 
99
135
  ```
100
136