Argument 1 passed to OAuth2\Provider\Facebook::get_user_info() must be an instance of OAuth2\Token\Token_Access
I am using the laravel-oauth2 package for Laravel 4 to set up a Facebook login. I am using the package seen here: https://github.com/madewithlove/laravel-oauth2 (which is based on your repository here).
When running the page that controls the login, the public/oauth/facebook, the Facebook prompt comes up fine, but when I click "accept", the page spits out the following error:
ErrorException Argument 1 passed to OAuth2\Provider\Facebook::get_user_info() must be an instance of OAuth2\Token\Token_Access, instance of OAuth2\Token_Access given, called in /Applications/MAMP/htdocs/crowdsets/laravel-master/app/controllers/Oauth2Controller.php on line 36 and defined It is pointing to /vendor/taylorotwell/laravel-oauth2/src/OAuth2/Provider/Facebook.php: 26
The get_user_info() function in Facebook.php looks like this:
public function get_user_info(Token_Access $token) { $url = 'https://graph.facebook.com/me?'.http_build_query(array( 'access_token' => $token->access_token, ));
$user = json_decode(file_get_contents($url));
// Create a response from the request
return array(
'uid' => $user->id,
'nickname' => $user->username,
'name' => $user->name,
'email' => $user->email,
'location' => $user->hometown->name,
'description' => $user->bio,
'image' => 'https://graph.facebook.com/me/picture?type=normal&access_token='.$token->access_token,
'urls' => array(
'Facebook' => $user->link,
),
);
}
My Oauth2Controller.php file looks like this:
'****************', 'secret' => '********************', )); if(! isset($_GET['code'])) { return $provider->authorize(); } else { // Howzit? try { $params = $provider->access($_GET['code']); $token = new Token_Access(array( 'access_token' => $params->access_token )); $user = $provider->get_user_info($token); // Here you should use this information to A) look for a user B) help a new user sign up with existing data. // If you store it all in a cookie and redirect to a registration page this is crazy-simple. echo "";
var_dump($user);
}
catch (OAuth2_Exception $e)
{
show_error('That didnt work: '.$e);
}
}
}
```
}
I am not sure why it is given me this error, as I followed the documentation and tutorials. Thank you for your help with solving this issue.
Had the same issue, I'm using PHP 5.4.7 and trying to connect to google.
This question from stackoverflow is probably the answer? http://stackoverflow.com/questions/17332530/laravel-oauth2-issue-in-laravel-4
However after I fixed the problem of "OAuth2\Token\Token_Access", there's a new error pointing to line 70 of Provider/Google.php:
'nickname' => strtolower(Laravel\Str::slug($user['name'], '_')),
Where it says "Class 'OAuth2\Provider\Laravel\Str' not found"
Did you manage to solve the Google error? Coz I got to this point too. Thanks
Oh, I just had to comment out that line and it worked just fine. Thanks