1
1
<?php namespace App \Http \Controllers ;
2
2
3
- use JWT ;
4
3
use Hash ;
5
4
use Config ;
6
5
use Validator ;
6
+ use Firebase \JWT \JWT ;
7
7
use Illuminate \Http \Request ;
8
8
use GuzzleHttp ;
9
9
use GuzzleHttp \Subscriber \Oauth \Oauth1 ;
@@ -99,8 +99,7 @@ public function signup(Request $request)
99
99
*/
100
100
public function facebook (Request $ request )
101
101
{
102
- $ accessTokenUrl = 'https://graph.facebook.com/v2.3/oauth/access_token ' ;
103
- $ graphApiUrl = 'https://graph.facebook.com/v2.3/me ' ;
102
+ $ client = new GuzzleHttp \Client ();
104
103
105
104
$ params = [
106
105
'code ' => $ request ->input ('code ' ),
@@ -109,13 +108,18 @@ public function facebook(Request $request)
109
108
'client_secret ' => Config::get ('app.facebook_secret ' )
110
109
];
111
110
112
- $ client = new GuzzleHttp \Client ();
113
-
114
111
// Step 1. Exchange authorization code for access token.
115
- $ accessToken = $ client ->get ($ accessTokenUrl , ['query ' => $ params ])->json ();
112
+ $ accessTokenResponse = $ client ->request ('GET ' , 'https://graph.facebook.com/v2.5/oauth/access_token ' , [
113
+ 'query ' => $ params
114
+ ]);
115
+ $ accessToken = json_decode ($ accessTokenResponse ->getBody (), true );
116
116
117
117
// Step 2. Retrieve profile information about the current user.
118
- $ profile = $ client ->get ($ graphApiUrl , ['query ' => $ accessToken ])->json ();
118
+ $ profileResponse = $ client ->request ('GET ' , 'https://graph.facebook.com/v2.5/me ' , [
119
+ 'query ' => $ accessToken
120
+ ]);
121
+ $ profile = json_decode ($ profileResponse ->getBody (), true );
122
+
119
123
120
124
121
125
// Step 3a. If user is already signed in then link accounts.
@@ -162,8 +166,7 @@ public function facebook(Request $request)
162
166
*/
163
167
public function google (Request $ request )
164
168
{
165
- $ accessTokenUrl = 'https://accounts.google.com/o/oauth2/token ' ;
166
- $ peopleApiUrl = 'https://www.googleapis.com/plus/v1/people/me/openIdConnect ' ;
169
+ $ client = new GuzzleHttp \Client ();
167
170
168
171
$ params = [
169
172
'code ' => $ request ->input ('code ' ),
@@ -173,18 +176,17 @@ public function google(Request $request)
173
176
'grant_type ' => 'authorization_code ' ,
174
177
];
175
178
176
- $ client = new GuzzleHttp \Client ();
177
-
178
179
// Step 1. Exchange authorization code for access token.
179
- $ accessTokenResponse = $ client ->post ( $ accessTokenUrl , [ ' body ' => $ params ]);
180
- $ accessToken = $ accessTokenResponse -> json ()[ ' access_token ' ];
181
-
182
- $ headers = array ( ' Authorization ' => ' Bearer ' . $ accessToken );
180
+ $ accessTokenResponse = $ client ->request ( ' POST ' , ' https://accounts.google.com/o/oauth2/token ' , [
181
+ ' form_params ' => $ params
182
+ ]);
183
+ $ accessToken = json_decode ( $ accessTokenResponse -> getBody (), true );
183
184
184
185
// Step 2. Retrieve profile information about the current user.
185
- $ profileResponse = $ client ->get ($ peopleApiUrl , ['headers ' => $ headers ]);
186
-
187
- $ profile = $ profileResponse ->json ();
186
+ $ profileResponse = $ client ->request ('GET ' , 'https://www.googleapis.com/plus/v1/people/me/openIdConnect ' , [
187
+ 'headers ' => array ('Authorization ' => 'Bearer ' . $ accessToken ['access_token ' ])
188
+ ]);
189
+ $ profile = json_decode ($ profileResponse ->getBody (), true );
188
190
189
191
// Step 3a. If user is already signed in then link accounts.
190
192
if ($ request ->header ('Authorization ' ))
@@ -230,8 +232,7 @@ public function google(Request $request)
230
232
*/
231
233
public function linkedin (Request $ request )
232
234
{
233
- $ accessTokenUrl = 'https://www.linkedin.com/uas/oauth2/accessToken ' ;
234
- $ peopleApiUrl = 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address) ' ;
235
+ $ client = new GuzzleHttp \Client ();
235
236
236
237
$ params = [
237
238
'code ' => $ request ->input ('code ' ),
@@ -241,19 +242,20 @@ public function linkedin(Request $request)
241
242
'grant_type ' => 'authorization_code ' ,
242
243
];
243
244
244
- $ client = new GuzzleHttp \Client ();
245
-
246
245
// Step 1. Exchange authorization code for access token.
247
- $ accessTokenResponse = $ client ->post ($ accessTokenUrl , ['body ' => $ params ]);
248
-
249
- $ apiParams = array (
250
- 'oauth2_access_token ' => $ accessTokenResponse ->json ()['access_token ' ],
251
- 'format ' => 'json '
252
- );
246
+ $ accessTokenResponse = $ client ->request ('POST ' , 'https://www.linkedin.com/uas/oauth2/accessToken ' , [
247
+ 'form_params ' => $ params
248
+ ]);
249
+ $ accessToken = json_decode ($ accessTokenResponse ->getBody (), true );
253
250
254
251
// Step 2. Retrieve profile information about the current user.
255
- $ peopleApiResponse = $ client ->get ($ peopleApiUrl , ['query ' => $ apiParams ]);
256
- $ profile = $ peopleApiResponse ->json ();
252
+ $ profileResponse = $ client ->request ('GET ' , 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address) ' , [
253
+ 'query ' => [
254
+ 'oauth2_access_token ' => $ accessToken ['access_token ' ],
255
+ 'format ' => 'json '
256
+ ]
257
+ ]);
258
+ $ profile = json_decode ($ profileResponse ->getBody (), true );
257
259
258
260
// Step 3a. If user is already signed in then link accounts.
259
261
if ($ request ->header ('Authorization ' ))
@@ -299,25 +301,30 @@ public function linkedin(Request $request)
299
301
*/
300
302
public function twitter (Request $ request )
301
303
{
302
- $ requestTokenUrl = 'https://api.twitter.com/oauth/request_token ' ;
303
- $ accessTokenUrl = 'https://api.twitter.com/oauth/access_token ' ;
304
- $ profileUrl = 'https://api.twitter.com/1.1/users/show.json?screen_name= ' ;
305
-
306
- $ client = new GuzzleHttp \Client ();
304
+ $ stack = GuzzleHttp \HandlerStack::create ();
307
305
308
306
// Part 1 of 2: Initial request from Satellizer.
309
307
if (!$ request ->input ('oauth_token ' ) || !$ request ->input ('oauth_verifier ' ))
310
308
{
309
+ $ stack = GuzzleHttp \HandlerStack::create ();
310
+
311
311
$ requestTokenOauth = new Oauth1 ([
312
312
'consumer_key ' => Config::get ('app.twitter_key ' ),
313
313
'consumer_secret ' => Config::get ('app.twitter_secret ' ),
314
- 'callback ' => Config::get ('app.twitter_callback ' )
314
+ 'callback ' => $ request ->input ('redirectUri ' ),
315
+ 'token ' => '' ,
316
+ 'token_secret ' => ''
315
317
]);
318
+ $ stack ->push ($ requestTokenOauth );
316
319
317
- $ client ->getEmitter ()->attach ($ requestTokenOauth );
320
+ $ client = new GuzzleHttp \Client ([
321
+ 'handler ' => $ stack
322
+ ]);
318
323
319
324
// Step 1. Obtain request token for the authorization popup.
320
- $ requestTokenResponse = $ client ->post ($ requestTokenUrl , ['auth ' => 'oauth ' ]);
325
+ $ requestTokenResponse = $ client ->request ('POST ' , 'https://api.twitter.com/oauth/request_token ' , [
326
+ 'auth ' => 'oauth '
327
+ ]);
321
328
322
329
$ oauthToken = array ();
323
330
parse_str ($ requestTokenResponse ->getBody (), $ oauthToken );
@@ -333,28 +340,40 @@ public function twitter(Request $request)
333
340
'consumer_key ' => Config::get ('app.twitter_key ' ),
334
341
'consumer_secret ' => Config::get ('app.twitter_secret ' ),
335
342
'token ' => $ request ->input ('oauth_token ' ),
336
- 'verifier ' => $ request ->input ('oauth_verifier ' )
343
+ 'verifier ' => $ request ->input ('oauth_verifier ' ),
344
+ 'token_secret ' => ''
337
345
]);
346
+ $ stack ->push ($ accessTokenOauth );
338
347
339
- $ client ->getEmitter ()->attach ($ accessTokenOauth );
348
+ $ client = new GuzzleHttp \Client ([
349
+ 'handler ' => $ stack
350
+ ]);
340
351
341
352
// Step 3. Exchange oauth token and oauth verifier for access token.
342
- $ accessTokenResponse = $ client ->post ($ accessTokenUrl , ['auth ' => 'oauth ' ])->getBody ();
353
+ $ accessTokenResponse = $ client ->request ('POST ' , 'https://api.twitter.com/oauth/access_token ' , [
354
+ 'auth ' => 'oauth '
355
+ ]);
343
356
344
357
$ accessToken = array ();
345
- parse_str ($ accessTokenResponse , $ accessToken );
358
+ parse_str ($ accessTokenResponse-> getBody () , $ accessToken );
346
359
347
360
$ profileOauth = new Oauth1 ([
348
361
'consumer_key ' => Config::get ('app.twitter_key ' ),
349
362
'consumer_secret ' => Config::get ('app.twitter_secret ' ),
350
- 'oauth_token ' => $ accessToken ['oauth_token ' ]
363
+ 'oauth_token ' => $ accessToken ['oauth_token ' ],
364
+ 'token_secret ' => ''
351
365
]);
366
+ $ stack ->push ($ profileOauth );
352
367
353
- $ client ->getEmitter ()->attach ($ profileOauth );
368
+ $ client = new GuzzleHttp \Client ([
369
+ 'handler ' => $ stack
370
+ ]);
354
371
355
372
// Step 4. Retrieve profile information about the current user.
356
- $ profile = $ client ->get ($ profileUrl . $ accessToken ['screen_name ' ], ['auth ' => 'oauth ' ])->json ();
357
-
373
+ $ profileResponse = $ client ->request ('GET ' , 'https://api.twitter.com/1.1/users/show.json?screen_name= ' . $ accessToken ['screen_name ' ], [
374
+ 'auth ' => 'oauth '
375
+ ]);
376
+ $ profile = json_decode ($ profileResponse ->getBody (), true );
358
377
359
378
// Step 5a. Link user accounts.
360
379
if ($ request ->header ('Authorization ' ))
@@ -400,8 +419,7 @@ public function twitter(Request $request)
400
419
*/
401
420
public function foursquare (Request $ request )
402
421
{
403
- $ accessTokenUrl = 'https://foursquare.com/oauth2/access_token ' ;
404
- $ userProfileUrl = 'https://api.foursquare.com/v2/users/self ' ;
422
+ $ client = new GuzzleHttp \Client ();
405
423
406
424
$ params = [
407
425
'code ' => $ request ->input ('code ' ),
@@ -411,21 +429,21 @@ public function foursquare(Request $request)
411
429
'grant_type ' => 'authorization_code ' ,
412
430
];
413
431
414
- $ client = new GuzzleHttp \Client ();
415
-
416
432
// Step 1. Exchange authorization code for access token.
417
- $ accessTokenResponse = $ client ->post ($ accessTokenUrl , ['body ' => $ params ]);
418
- $ accessToken = $ accessTokenResponse ->json ()['access_token ' ];
419
-
420
- $ profileParams = [
421
- 'v ' => '20140806 ' ,
422
- 'oauth_token ' => $ accessToken
423
- ];
433
+ $ accessTokenResponse = $ client ->request ('POST ' , 'https://foursquare.com/oauth2/access_token ' , [
434
+ 'form_params ' => $ params
435
+ ]);
436
+ $ accessToken = json_decode ($ accessTokenResponse ->getBody (), true );
424
437
425
438
// Step 2. Retrieve profile information about the current user.
426
- $ profileResponse = $ client ->get ($ userProfileUrl , ['query ' => $ profileParams ]);
439
+ $ profileResponse = $ client ->request ('GET ' , 'https://api.foursquare.com/v2/users/self ' , [
440
+ 'query ' => [
441
+ 'v ' => '20140806 ' ,
442
+ 'oauth_token ' => $ accessToken ['access_token ' ]
443
+ ]
444
+ ]);
427
445
428
- $ profile = $ profileResponse ->json ( )['response ' ]['user ' ];
446
+ $ profile = json_decode ( $ profileResponse ->getBody (), true )['response ' ]['user ' ];
429
447
430
448
// Step 3a. If user is already signed in then link accounts.
431
449
if ($ request ->header ('Authorization ' ))
@@ -470,7 +488,7 @@ public function foursquare(Request $request)
470
488
*/
471
489
public function instagram (Request $ request )
472
490
{
473
- $ accessTokenUrl = ' https://api.instagram.com/oauth/access_token ' ;
491
+ $ client = new GuzzleHttp \ Client () ;
474
492
475
493
$ params = [
476
494
'code ' => $ request ->input ('code ' ),
@@ -480,13 +498,11 @@ public function instagram(Request $request)
480
498
'grant_type ' => 'authorization_code ' ,
481
499
];
482
500
483
- $ client = new GuzzleHttp \Client ();
484
-
485
501
// Step 1. Exchange authorization code for access token.
486
- $ accessTokenResponse = $ client ->post ( $ accessTokenUrl , [ ' body ' => $ params ]);
487
- $ accessToken = $ accessTokenResponse -> json ();
488
-
489
-
502
+ $ accessTokenResponse = $ client ->request ( ' POST ' , ' https://api.instagram.com/oauth/access_token ' , [
503
+ ' body ' => $ params
504
+ ]);
505
+ $ accessToken = json_decode ( $ accessTokenResponse -> getBody (), true );
490
506
491
507
// Step 2a. If user is already signed in then link accounts.
492
508
if ($ request ->header ('Authorization ' ))
@@ -531,8 +547,7 @@ public function instagram(Request $request)
531
547
*/
532
548
public function github (Request $ request )
533
549
{
534
- $ accessTokenUrl = 'https://github.com/login/oauth/access_token ' ;
535
- $ userApiUrl = 'https://api.github.com/user ' ;
550
+ $ client = new GuzzleHttp \Client ();
536
551
537
552
$ params = [
538
553
'code ' => $ request ->input ('code ' ),
@@ -541,22 +556,20 @@ public function github(Request $request)
541
556
'redirect_uri ' => $ request ->input ('redirectUri ' )
542
557
];
543
558
544
- $ client = new GuzzleHttp \Client ();
545
-
546
559
// Step 1. Exchange authorization code for access token.
547
- $ accessTokenResponse = $ client ->get ($ accessTokenUrl , ['query ' => $ params ]);
560
+ $ accessTokenResponse = $ client ->request ('GET ' , 'https://github.com/login/oauth/access_token ' , [
561
+ 'query ' => $ params
562
+ ]);
548
563
549
564
$ accessToken = array ();
550
565
parse_str ($ accessTokenResponse ->getBody (), $ accessToken );
551
566
552
- $ headers = array ('User-Agent ' => 'Satellizer ' );
553
-
554
567
// Step 2. Retrieve profile information about the current user.
555
- $ userApiResponse = $ client ->get ( $ userApiUrl , [
556
- 'headers ' => $ headers ,
568
+ $ profileResponse = $ client ->request ( ' GET ' , ' https://api.github.com/user ' , [
569
+ 'headers ' => [ ' User-Agent ' => ' Satellizer ' ] ,
557
570
'query ' => $ accessToken
558
571
]);
559
- $ profile = $ userApiResponse -> json ( );
572
+ $ profile = json_decode ( $ profileResponse -> getBody (), true );
560
573
561
574
// Step 3a. If user is already signed in then link accounts.
562
575
if ($ request ->header ('Authorization ' ))
0 commit comments