buletomato25 commited on
Commit
e2b9ac7
·
1 Parent(s): 8097043

login_separate

Browse files
Files changed (3) hide show
  1. app.py +2 -44
  2. client_secret.json +0 -11
  3. login.py +51 -0
app.py CHANGED
@@ -15,6 +15,7 @@ from google.oauth2 import id_token
15
  from google_auth_oauthlib.flow import Flow
16
  from google.auth.transport import requests as google_requests
17
  from new_record import record_bp
 
18
 
19
 
20
  # Hugging Face のトークン取得(環境変数 HF に設定)
@@ -36,15 +37,6 @@ app = Flask(__name__)
36
 
37
  app.config['SECRET_KEY'] = os.urandom(24)
38
 
39
- # Google OAuth 2.0の設定
40
- os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
41
- GOOGLE_CLIENT_ID = "228160683186-6u7986qsfhcv3kd9iqtv08iphpl4gdk2.apps.googleusercontent.com"
42
- GOOGLE_CLIENT_SECRET = "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"
43
- #HFにpushするときは下記のコメントアウトを外してください
44
- #REDIRECT_URI = "https://huggingface.co/spaces/Justtalk/JusTalk/callback"
45
- #ローカルの時はこちら
46
- REDIRECT_URI = "http://127.0.0.1:7860/callback"
47
-
48
  flow = Flow.from_client_secrets_file(
49
  'client_secret.json',
50
  scopes=["openid", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"],
@@ -109,47 +101,13 @@ def generate_filename(random_length):
109
  return filename
110
 
111
  app.register_blueprint(record_bp)
 
112
 
113
  # トップページ(テンプレート: index.html)
114
  @app.route('/')
115
  def top():
116
  return redirect('index')
117
 
118
- # ログイン画面(テンプレート: login.html)
119
- @app.route('/login')
120
- def login():
121
- authorization_url, state = flow.authorization_url()
122
- session['state'] = state
123
- return redirect(authorization_url)
124
-
125
-
126
- # ログイン後画面
127
- @app.route('/callback')
128
- def callback():
129
- flow.fetch_token(authorization_response=request.url)
130
-
131
- # `session.get('state')` を使用し、エラーを防ぐ
132
- session_state = session.get('state')
133
- request_state = request.args.get('state')
134
-
135
- if session_state is None or session_state != request_state:
136
- print(f"State mismatch error: session_state={session_state}, request_state={request_state}")
137
- return 'State mismatch error', 400
138
-
139
- credentials = flow.credentials
140
- request_session = google_requests.Request()
141
-
142
- id_info = id_token.verify_oauth2_token(
143
- credentials.id_token, request_session, GOOGLE_CLIENT_ID
144
- )
145
-
146
- session['google_id'] = id_info.get("sub")
147
- session['email'] = id_info.get("email")
148
- session['name'] = id_info.get("name")
149
-
150
- return redirect(url_for('new_person'))
151
-
152
-
153
  # フィードバック画面(テンプレート: feedback.html)
154
  @app.route('/feedback', methods=['GET', 'POST'])
155
  def feedback():
 
15
  from google_auth_oauthlib.flow import Flow
16
  from google.auth.transport import requests as google_requests
17
  from new_record import record_bp
18
+ from login import login_bp
19
 
20
 
21
  # Hugging Face のトークン取得(環境変数 HF に設定)
 
37
 
38
  app.config['SECRET_KEY'] = os.urandom(24)
39
 
 
 
 
 
 
 
 
 
 
40
  flow = Flow.from_client_secrets_file(
41
  'client_secret.json',
42
  scopes=["openid", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"],
 
101
  return filename
102
 
103
  app.register_blueprint(record_bp)
104
+ app.register_blueprint(login_bp)
105
 
106
  # トップページ(テンプレート: index.html)
107
  @app.route('/')
108
  def top():
109
  return redirect('index')
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  # フィードバック画面(テンプレート: feedback.html)
112
  @app.route('/feedback', methods=['GET', 'POST'])
113
  def feedback():
client_secret.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "web": {
3
- "client_id": "228160683186-6u7986qsfhcv3kd9iqtv08iphpl4gdk2.apps.googleusercontent.com",
4
- "project_id": "justtalk-454100",
5
- "auth_uri": "https://accounts.google.com/o/oauth2/auth",
6
- "token_uri": "https://oauth2.googleapis.com/token",
7
- "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
8
- "client_secret": "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",
9
- "redirect_uris": "http://127.0.0.1:7860/callback"
10
- }
11
- }
 
 
 
 
 
 
 
 
 
 
 
 
login.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Blueprint, request, redirect, session, url_for, render_template
2
+ import os
3
+ from google.oauth2 import id_token
4
+ from google_auth_oauthlib.flow import Flow
5
+ from google.auth.transport import requests as google_requests
6
+
7
+ login_bp = Blueprint('login', __name__)
8
+
9
+ # Google OAuth 2.0 の設定
10
+ os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
11
+ GOOGLE_CLIENT_ID = "228160683186-6u7986qsfhcv3kd9iqtv08iphpl4gdk2.apps.googleusercontent.com"
12
+ GOOGLE_CLIENT_SECRET = "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"
13
+ REDIRECT_URI = "http://127.0.0.1:7860/callback"
14
+
15
+ flow = Flow.from_client_secrets_file(
16
+ 'client_secret.json',
17
+ scopes=["openid", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"],
18
+ redirect_uri=REDIRECT_URI
19
+ )
20
+
21
+ @login_bp.route('/login')
22
+ def login():
23
+ authorization_url, state = flow.authorization_url()
24
+ session['state'] = state
25
+ return redirect(authorization_url)
26
+
27
+ @login_bp.route('/callback')
28
+ def callback():
29
+ flow.fetch_token(authorization_response=request.url)
30
+
31
+ session_state = session.get('state')
32
+ request_state = request.args.get('state')
33
+
34
+ if session_state is None or session_state != request_state:
35
+ print(f"State mismatch error: session_state={session_state}, request_state={request_state}")
36
+ return 'State mismatch error', 400
37
+
38
+ credentials = flow.credentials
39
+ request_session = google_requests.Request()
40
+
41
+ id_info = id_token.verify_oauth2_token(
42
+ credentials.id_token, request_session, GOOGLE_CLIENT_ID
43
+ )
44
+
45
+ session['google_id'] = id_info.get("sub")
46
+ session['email'] = id_info.get("email")
47
+ session['name'] = id_info.get("name")
48
+
49
+ return redirect(url_for('new_person'))
50
+
51
+