質問編集履歴

3

文章の追加

2018/11/26 00:57

投稿

rele_96
rele_96

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,8 @@
1
1
  oauth認証でグーグルのログインについて
2
2
 
3
- localhostからのログイン認証成功したのですが、サーバー上でのグーグルログインができません
3
+ localhostからのログイン認証成功したのですが、サーバー上でのグーグルログインができません
4
4
 
5
-
5
+ ソースコードはこちらです
6
6
 
7
7
  ```ここに言語を入力
8
8
 

2

文章の追加

2018/11/26 00:57

投稿

rele_96
rele_96

スコア6

test CHANGED
File without changes
test CHANGED
@@ -187,3 +187,7 @@
187
187
 
188
188
 
189
189
  redirect_uriはipアドレスにしています。
190
+
191
+ サーバー上でのログインを実装したいです。
192
+
193
+ よろしくお願いします。

1

コードの追加

2018/11/26 00:54

投稿

rele_96
rele_96

スコア6

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  localhostからのログイン認証成功したのですが、サーバー上でのグーグルログインができません
4
4
 
5
- redirect_uriはipアドレスにしています。
5
+
6
6
 
7
7
  ```ここに言語を入力
8
8
 
@@ -33,3 +33,157 @@
33
33
  header("Location: " . $AUTH_URL. '?' . http_build_query($params));
34
34
 
35
35
  ?>
36
+
37
+ ```
38
+
39
+ ```ここに言語を入力
40
+
41
+ <?php
42
+
43
+ // データベース接続
44
+
45
+ require_once("../dbconnect.php");
46
+
47
+ dbConnect();
48
+
49
+
50
+
51
+ // アプリケーション設定
52
+
53
+ define('CONSUMER_KEY', '');
54
+
55
+ define('CONSUMER_SECRET', '');
56
+
57
+ define('CALLBACK_URL', '');
58
+
59
+
60
+
61
+ // URL
62
+
63
+ define('TOKEN_URL', 'https://accounts.google.com/o/oauth2/token');
64
+
65
+ define('INFO_URL', 'https://www.googleapis.com/oauth2/v1/userinfo');
66
+
67
+
68
+
69
+ $params = array(
70
+
71
+ 'code' => $_GET['code'],
72
+
73
+ 'grant_type' => 'authorization_code',
74
+
75
+ 'redirect_uri' => CALLBACK_URL,
76
+
77
+ 'client_id' => CONSUMER_KEY,
78
+
79
+ 'client_secret' => CONSUMER_SECRET,
80
+
81
+ );
82
+
83
+
84
+
85
+ // POST送信
86
+
87
+ $options = array('http' => array(
88
+
89
+ 'method' => 'POST',
90
+
91
+ 'content' => http_build_query($params)
92
+
93
+ ));
94
+
95
+
96
+
97
+ // アクセストークンの取得
98
+
99
+ $res = file_get_contents(TOKEN_URL, false, stream_context_create($options));
100
+
101
+
102
+
103
+ // レスポンス取得
104
+
105
+ $token = json_decode($res, true);
106
+
107
+ if(isset($token['error'])){
108
+
109
+ echo 'エラー発生';
110
+
111
+ exit;
112
+
113
+ }
114
+
115
+
116
+
117
+ $access_token = $token['access_token'];
118
+
119
+
120
+
121
+ $params = array('access_token' => $access_token);
122
+
123
+
124
+
125
+ // ユーザー情報取得
126
+
127
+ $res = file_get_contents(INFO_URL . '?' . http_build_query($params));
128
+
129
+
130
+
131
+ $result = json_decode($res, true);
132
+
133
+ ?>
134
+
135
+
136
+
137
+ <!DOCTYPE html>
138
+
139
+ <html>
140
+
141
+ <head>
142
+
143
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
144
+
145
+ <link rel="stylesheet" href="style.css">
146
+
147
+ <title>Googleログイン</title>
148
+
149
+ </head>
150
+
151
+ <header>
152
+
153
+ <h1>TravelSupport</h1>
154
+
155
+ <h2>ホーム</h2>
156
+
157
+ </header>
158
+
159
+ <body>
160
+
161
+ <h3>プロフィール画像</h3>
162
+
163
+ <img src="<?php echo $result['picture']; ?>" width="80">
164
+
165
+ <h3>ユーザー情報</h3>
166
+
167
+ <table>
168
+
169
+ <tr><td>ID</td><td><?php echo $result['id']; ?></td></tr>
170
+
171
+ <tr><td>ユーザー名</td><td><?php echo $result['name']; ?></td></tr>
172
+
173
+ <tr><td>苗字</td><td><?php echo $result['family_name']; ?></td></tr>
174
+
175
+ <tr><td>名前</td><td><?php echo $result['given_name']; ?></td></tr>
176
+
177
+ <tr><td>Email</td><td><?php echo $result['email']; ?></td></tr>
178
+
179
+ </table>
180
+
181
+ </body>
182
+
183
+ </html>
184
+
185
+ ```
186
+
187
+
188
+
189
+ redirect_uriはipアドレスにしています。