2016-06-20 10 views
0

So kann ich definitiv nicht meinen Kopf um diesen einwickeln. Ich befolge hier ein Laravel 5.2 Tutorial.Laravel Socialite und Office365: InvalidArgumentException in Manager.php Zeile 90: Treiber [Microsoft] nicht unterstützt

http://blog.damirmiladinov.com/laravel/laravel-5.2-socialite-facebook-login.html#.V2gUIrgrJPY

und den Fehler oben im Titel aufgelistet bekommen. Meine Strecken wie folgt aussehen:

Route::get('/', function() { 
    if(Auth::check()) return view('auth/register'); 
    return view('auth/login'); 
}); 

Route::get('/redirect', '[email protected]'); 
Route::get('/callback', '[email protected]'); 

-Controller sieht wie folgt aus:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Socialite; 

class MailAuthController extends Controller 
{ 
    // 
    public function redirect() 
     { 
      return \Socialite::with('microsoft')->redirect(); 
     } 

    public function callback() 
     { 
      // when microsoft calls with token 
     } 

    public function user() 
     { 

     } 
} 

Und services.php sieht wie folgt aus:

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Third Party Services 
    |-------------------------------------------------------------------------- 
    | 
    | This file is for storing the credentials for third party services such 
    | as Stripe, Mailgun, Mandrill, and others. This file provides a sane 
    | default location for this type of information, allowing packages 
    | to have a conventional place to find your various credentials. 
    | 
    */ 

    'mailgun' => [ 
     'domain' => env('MAILGUN_DOMAIN'), 
     'secret' => env('MAILGUN_SECRET'), 
    ], 

    'mandrill' => [ 
     'secret' => env('MANDRILL_SECRET'), 
    ], 

    'ses' => [ 
     'key' => env('SES_KEY'), 
     'secret' => env('SES_SECRET'), 
     'region' => 'us-east-1', 
    ], 

    'sparkpost' => [ 
     'secret' => env('SPARKPOST_SECRET'), 
    ], 

    'stripe' => [ 
     'model' => App\User::class, 
     'key' => env('STRIPE_KEY'), 
     'secret' => env('STRIPE_SECRET'), 
    ], 

    'microsoft' => [ 
     'client_id' => env('MICROSOFT_CLIENT_ID'), 
     'client_secret' => env('MICROSOFT_CLIENT_SECRET'), 
     'redirect' => env('http://localhost:8000/callback'), 
    ], 

]; 

Und anders als das habe ich keine Ahnung, wo ich könnte schief gehen. Erleuchte meinen Weg!

+0

Sie mit Microsoft versuchen. Aber der Fehler sagt, "Treiber [Microsoft] nicht unterstützt". Laut Socialite-Dokumentation unterstützt Socialite derzeit die Authentifizierung mit Facebook, Twitter, LinkedIn, Google, GitHub und Bitbucket. –

+0

Also, wie erstellt man einen benutzerdefinierten Treiber so, dass er Microsoft unterstützen könnte? –

Antwort

2

Ich würde empfehlen, die Microsoft Graph Anbieter aus dem Socialite Providers Paket zu verwenden.

Pull in den Microsoft-Graph-Provider über Ihre composer.json Datei:

"require": { 
    ... 

    "laravel/socialite": "^2.0", 
    "socialiteproviders/microsoft-graph": "dev-master" 
}, 

Run composer update.

Als nächstes fügen Sie die Verbindung Anmeldeinformationen config/services.php:

... 

'graph' => [ 
    'client_id'  => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 
    'client_secret' => 'xxxxxxxxxxxxxxxxxxxxxxx', 
    'redirect'  => 'https://my-app.dev', 
], 

* Hinweis: wenn config/services.php zu einem öffentlichen Repo begehen, diese Werte zu Ihrer .env Datei extrahieren und sie über die env helper method verweisen;

In config/app.php fügen Sie den SocialiteProviders/Generators Dienstleister der providers Array:

'providers' => [ 
    ... 

    /* 
    * Package Service Providers... 
    */ 
    Laravel\Socialite\SocialiteServiceProvider::class, 

    // This is a dependency of the socialiteproviders/microsoft-graph provider, and will be installed with the provider via it's composer.json file 
    SocialiteProviders\Manager\ServiceProvider::class, 

die Socialize Fassade Register (auch in config/app.php):

'aliases' => [ 
    ... 

    'Socialize' => 'Laravel\Socialite\Facades\Socialite', 

], 

ein Ereignis-Listener in app/Providers/EventServiceProvider.php registrieren:

protected $listen = [ 
    ... 

    'SocialiteProviders\Manager\SocialiteWasCalled' => [ 
     'SocialiteProviders\Graph\[email protected]' 
    ], 
]; 

Erstellen Sie Ihren Controller die Anforderungen zu verarbeiten:

<?php 

namespace App\Http\Controllers\Auth; 

use Illuminate\Http\Request; 
use Socialize; 

class AuthController extends \App\Http\Controllers\Controller 
{ 

    /** 
    * Redirect the user to the Graph authentication page. 
    * 
    * @return Response 
    */ 
    public function redirectToProvider() 
    { 
     return Socialize::with('graph')->redirect(); 

    } 

    /** 
    * Obtain the user information from graph. 
    * 
    * @return Response 
    */ 
    public function handleProviderCallback(Request $request) 
    { 
     $user = Socialize::with('graph')->user(); 

     // $user->token; 
    } 
} 

Schließlich Ihre Routen in routes/web.php hinzufügen:

<?php 

Route::get('auth/graph', 'Auth\[email protected]'); 
Route::get('auth/graph/callback','Auth\[email protected]');