omur00
omur00

Reputation: 106

"Could not authenticate you" when getting temporary credentials

I'm working on simple laravel9 project on my localhost where you can login via Facebook or Twitter.

I added custom domain to my localhost with verified ssl.

composer require laravel/socialite

already installed.

Facebook login works fine but twitter shows Erorr:

League\OAuth1\Client\Credentials\CredentialsException Received HTTP status code [401] with message "{"errors":[{"code":32,"message":"Could not authenticate you."}]}" when getting temporary credentials.

Here is my TwitterController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Laravel\Socialite\Facades\Socialite;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use Exception;

class TwitterController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function redirectToTwitter()
    {
        return Socialite::driver('twitter')->redirect();
    }
          
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function handleTwitterCallback()
    {
        try {
        
            $user = Socialite::driver('twitter')->user();
         
            $finduser = User::where('twitter_id', $user->id)->first();
         
            if($finduser){
         
                Auth::login($finduser);
        
                return redirect()->intended('/home');
         
            }else{
                $newUser = User::updateOrCreate(['email' => $user->email],[
                        'name' => $user->name,
                        'twitter_id'=> $user->id,
                         'username'=> $user->id,
                        'uid' => rand(9,999999999)+time(),
                        'password' => encrypt('123456dummy')
                    ]);
        
                Auth::login($newUser);
        
                return redirect()->intended('/home');
            }
        
        } catch (Exception $e) {
            dd($e->getMessage());
        }
    }
}

config/services.php

 'twitter' => [
        'client_id' => env('TWITTER_CLIENT_ID'),
        'client_secret' => env('TWITTER_CLIENT_SECRET'),
        'redirect' => 'https://testsite.com/auth/twitter/callback',
    ],

login.blade.php

 {{-- Login with Twitter --}}
     <div class="mt-4 p-3 d-flex justify-content-center">
      <a class="btn mr-1" href="{{ route('auth.twitter') }}"
          style="background: #1D9BF9; color: #ffffff; padding: 10px; width: 30%; text-align: center; border-radius:3px;">
          Twitter
      </a> 
  </div>

routes/web.php

Route::controller(TwitterController::class)->group(function(){
    Route::get('auth/twitter', 'redirectToTwitter')->name('auth.twitter');
    Route::get('auth/twitter/callback', 'handleTwitterCallback');
});

.env

TWITTER_CLIENT_ID=xxxxxxxxxxxxxxxx
TWITTER_CLIENT_SECRET=xxxxxxxxxxxxxxx

composer.json

 "require": {
    "php": "^7.3|^8.0",
    "fruitcake/laravel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "laravel/framework": "^8.75",
    "laravel/sanctum": "^2.11",
    "laravel/socialite": "^5.5",
    "laravel/tinker": "^2.5",
    "laravel/ui": "^3.4",
    "socialiteproviders/twitter": "^4.1"
},

I know that my thread is duplicated but I searched alot and found that there are many people didn't find a clean solution yet.

I also tried this:

composer require socialiteproviders/twitter

as provided by laravel docs for other login providers using this https://socialiteproviders.com/Twitter/#installation-basic-usage

tried also to add providers to config/app which are not needed as I know

'providers' => [ Laravel\Socialite\SocialiteServiceProvider::class,],

'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class,],

here is my twitter application screenshot: Environment:staging enter image description here

Upvotes: 1

Views: 1348

Answers (1)

omur00
omur00

Reputation: 106

Solved !

App keys where somehow broken so I regenerate them. and the other issue was misspilling in call back URL on Twitter app

Upvotes: 1

Related Questions