mardi 13 mars 2018

Laravel 5.6 Unresolvable dependency resolving

I am trying to login with Twitter using socialite. Everything is working fine till callback. Once I reach at callback, I am facing this error, called Unresolvable dependency resolving [Parameter #0 [ $app ]] in class Illuminate\Support\ServiceProvider

Here is my Service Provider:

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use User;
use Laravel\Socialite\Contracts\User as ProviderUser;

class SocialTwitterAccountService extends ServiceProvider
{

    public function createOrGetUser(ProviderUser $providerUser)
    {
        $account = SocialTwitterAccount::whereProvider('twitter')
            ->whereProviderUserId($providerUser->getId())
            ->first();

        if ($account) {
            return $account->user;
        } else {

            $account = new SocialTwitterAccount([
                'provider_user_id' => $providerUser->getId(),
                'provider' => 'twitter'
            ]);

            $user = User::whereEmail($providerUser->getEmail())->first();

            if (!$user) {

                $user = User::create([
                        'email' => $providerUser->getEmail(),
                        'name' => $providerUser->getName(),
                        'password' => md5(rand(1, 10000)),
                ]);
            }

            $account->user()->associate($user);
            $account->save();

            return $user;
        }
    }
}

And I've also registered it in provider:

App\Providers\SocialTwitterAccountService::class,

Here is my redirect and callback functions:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Laravel\Socialite\Facades\Socialite;
use App\Providers\SocialTwitterAccountService;

class SocialAuthTwitterController extends Controller
{

    /**
     * Create a redirect method to twitter api.
     *
     * @return void
     */
    public function redirect()
    {
        return Socialite::driver('twitter')->redirect();
    }

    /**
     * Return a callback method from twitter api.
     *
     * @return callback URL from twitter
     */
    public function callback(SocialTwitterAccountService $service)
    {
        $user = $service->createOrGetUser(Socialite::driver('twitter')->user());
        auth()->login($user);
        return redirect()->to('/home');
    }
}



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2p8oFow
via IFTTT

Aucun commentaire:

Enregistrer un commentaire