Guest User

Untitled

a guest
Jun 20th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. Fatal error: Call to a member function pull() on null
  2.  
  3. Socialite::with('facebook')->stateless()->redirect()->getTargetUrl()
  4.  
  5. $fb_user = Socialite::with('facebook')->user();
  6.  
  7. Socialite::with('facebook')->stateless()->redirect()->getTargetUrl()
  8.  
  9. $fb_user = Socialite::with('facebook')->stateless()->user();
  10.  
  11. <?php
  12.  
  13. namespace AppHttpControllers;
  14.  
  15. use AppHttpControllersController;
  16. use IlluminateSupportFacadesHash;
  17. use IlluminateHttpRequest;
  18. use AppUser;
  19. use AppSocialAccount;
  20. use Socialite;
  21.  
  22. class SocialController extends Controller
  23. {
  24. public function social(Request $request) {
  25.  
  26. $provider = $request->input('provider');
  27. switch($provider){
  28. case SocialAccount::SERVICE_FACEBOOK:
  29. $social_user = Socialite::driver(SocialAccount::SERVICE_FACEBOOK)->fields([
  30. 'name',
  31. 'first_name',
  32. 'last_name',
  33. 'email'
  34. ]);
  35. break;
  36. case SocialAccount::SERVICE_GOOGLE:
  37. $social_user = Socialite::driver(SocialAccount::SERVICE_GOOGLE)
  38. ->scopes(['profile','email']);
  39. break;
  40. default :
  41. $social_user = null;
  42. }
  43.  
  44. abort_if($social_user == null , 422,'Provider missing');
  45.  
  46. $social_user_details = $social_user->userFromToken($request->input('access_token'));
  47.  
  48. abort_if($social_user_details == null , 400,'Invalid credentials'); //|| $fb_user->id != $request->input('userID')
  49.  
  50. $account = SocialAccount::where("provider_user_id",$social_user_details->id)
  51. ->where("provider",$provider)
  52. ->with('user')->first();
  53.  
  54. if($account){
  55. return $this->issueToken($account->user);
  56. }
  57. else {
  58. // create new user and social login if user with social id not found.
  59. $user = User::where("email",$social_user_details->getEmail())->first();
  60. if(!$user){
  61. // create new social login if user already exist.
  62. $user = new User;
  63. switch($provider){
  64. case SocialAccount::SERVICE_FACEBOOK:
  65. $user->first_name = $social_user_details->user['first_name'];
  66. $user->last_name = $social_user_details->user['last_name'];
  67. break;
  68. case SocialAccount::SERVICE_GOOGLE:
  69. $user->first_name = $social_user_details->user['name']['givenName'];
  70. $user->last_name = $social_user_details->user['name']['familyName'];
  71. break;
  72. default :
  73. }
  74. $user->email = $social_user_details->getEmail();
  75. $user->username = $social_user_details->getEmail();
  76. $user->password = Hash::make('social');
  77. $user->save();
  78. }
  79. $social_account = new SocialAccount;
  80. $social_account->provider = $provider;
  81. $social_account->provider_user_id = $social_user_details->id;
  82. $user->social_accounts()->save($social_account);
  83. return $this->issueToken($user);
  84. }
  85. }
  86.  
  87. private function issueToken(User $user) {
  88.  
  89. $userToken = $user->token() ?? $user->createToken('socialLogin');
  90.  
  91. return [
  92. "token_type" => "Bearer",
  93. "access_token" => $userToken->accessToken
  94. ];
  95. }
  96. }
Add Comment
Please, Sign In to add comment