artdarek / oauth-4-laravel

OAuth Service Provider for Laravel 4
684 stars 216 forks source link

New users authentication #102

Open drux31 opened 10 years ago

drux31 commented 10 years ago

Hi How can I get a new access token for a new user ? the following code does not work since I am still getting the same access token (for every user). I don't even get the authentication form again.

 public function loginWithRunKeeper() {

$user_id = Session::get('user_id');

$profile = Profile::where('user_id', '=', $user_id)->first();

//instanciation du service runkeeper
$rk = OAuth::consumer( 'RunKeeper');

if ($profile) {

    //Définition du type de token
    $extraparam = array("token_type" => "Bearer");

    //Récupération du token d'accès dans la BD
    $access_token = $profile->access_token;

    //Création du token pour runkeeper
    $token = new StdOAuth2Token($access_token, null, null, $extraparam);

    //Enregistrement du token dans runkeeper
    $storage = $rk->getStorage()->storeAccessToken('RunKeeper',$token);

    //Récupération des infos utilisateur
    $result = json_decode( $rk->request( '/user' ), true );
    $result2 = json_decode( $rk->request( '/profile' ), true );

    $message = 'Your unique runkeeper user id is: ' . $result['userID']. ' and your name is ' . $result2['name'];
    echo $message. "<br/>";

} else {

    // get data from input
    $code = Input::get( 'code' );

    // if code is provided get user data and sign in
    if ( !empty( $code ) ) {

        // This was a callback request from facebook, get the token
        $token = $rk->requestAccessToken( $code );

        dd($token);

        $result = json_decode( $rk->request( '/user' ), true );
        $result2 = json_decode( $rk->request( '/profile' ), true );
        $message = 'Your unique runkeeper user id is: ' . $result['userID']. ' and your name is ' . $result2['name'];
        echo $message. "<br/>";

    }
    // if not ask for permission first
    else {
        // get rk authorization
        $url = $rk->getAuthorizationUri();

        // return to facebook login url
         return Redirect::to( (string)$url );
    }
}
}
nirmal783 commented 10 years ago

try this.... it worked for me... hope u cud find ur answers within... ... public function loginWithFB() { // get data from input $code = Input::get('code');

    // get fb service
    $fb = OAuth::consumer('Facebook');

    // check if code is valid
    // if code is provided get user data and sign in
    if (!empty($code)) {
        if(!isset($_SESSION['token'])){
            // This was a callback request from facebook, get the token
            $token = $fb -> requestAccessToken($code);  
            $_SESSION['token'] = $token->getAccessToken();
        }

        // Send a request with it
        $result = json_decode($fb -> request('/me'), true);
        $message = 'facebook user id is: ' . $result['id'] . ' and your name is ' . $result['name'];

         $OauthProfile = OauthProfile::where('user_id', '=', $result['id']) -> first();

         if (empty($OauthProfile)) {

             $oauth = new OauthProfile();
             $oauth -> user_id = $result['id'];
             $oauth -> name = $result['name'];
             $oauth -> gender = $result['gender'];
             $oauth -> email = $result['email'];
             $oauth -> save();

             $user = new User;
             $user -> name = $result['name'];
             $user -> email = $result['email'];
             $user -> save();
        }
        //Var_dump
        display whole array()
        dd($result);

}