Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Argument 1 passed to OAuth2\Provider\Facebook::get_user_info() must be an instance of OAuth2\Token\Token_Access #52

Open
msutyak opened this issue Jun 27, 2013 · 3 comments

Comments

@msutyak
Copy link

msutyak commented Jun 27, 2013

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.
@X-Y
Copy link

X-Y commented Aug 19, 2013

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"

@MwirabuaTimothy
Copy link

Did you manage to solve the Google error? Coz I got to this point too. Thanks

@MwirabuaTimothy
Copy link

Oh, I just had to comment out that line and it worked just fine. Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants