Laravel 5.3サードパーティ登録を実現する微信編

3382 ワード

0微信テストインタフェースの申請
微信公衆プラットフォーム開発者のドキュメントにアクセスし、開発-インタフェーステスト番号申請を開始し、関連資料申請をインタフェースに記入し、appidとappsecretを取得します.次の体験インタフェース権限テーブルで、「Web権限取得ユーザー基本情報」を見つけ、「ドメイン名の変更」をクリックします.ここにはURLではなくドメイン名(文字列)が記載されているので、http://などのプロトコルヘッダを追加しないでください.テストインタフェースではip(実測用ipでは問題があるのでドメイン名を推奨)を書くことができますが、携帯電話でテストするときはapacheの権限をペアに設定することに注意してください.注意ルートディレクトリと現在のプロジェクトのディレクトリ権限は、許可を設定します.以下は参考設定です.
 #www  
    ServerName localhost
    DocumentRoot D:/site
    
        Options +Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted #    
    



    DocumentRoot "d:/site/xxx/public" #      
    ServerName dev.xxx.com
    ServerAlias *.xxx.com
    ErrorLog "logs/dev.xxx.com-error.log"
    CustomLog "logs/dev.xxx.com-access.log" common
    
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Allow,Deny
        Allow from all
        Require all granted #    
        Satisfy any
    


1関連ライブラリのインストール
まずcomposerに以下の内容を追加します.
  "require": {
    "laravel/socialite": "^2.0",
    "socialiteproviders/weixin": "3.0.*"
  },

以上のライブラリをcomposer installでインストールします.
2 config/app.phpの設定
Providerの追加
'providers' => [
    SocialiteProviders\Manager\ServiceProvider::class,
],

Aliasの追加
'aliases' => [ 
    'Socialite' => Laravel\Socialite\Facades\Socialite::class, 
],

3 config/services.phpの構成
微信インタフェースのappidとappsecretの設定
'weixin' => [
    'client_id' => env('WEIXIN_KEY'),
    'client_secret' => env('WEIXIN_SECRET'),
    'redirect' => env('WEIXIN_REDIRECT_URI'),
],

4 app/Providers/EventServiceProvider.phpの設定
イベントリスニングの追加
use SocialiteProviders\Manager\SocialiteWasCalled;
protected $listen = [   
    SocialiteWasCalled::class => [        
        \SocialiteProviders\Weixin\WeixinExtendSocialite::class,    
    ],
];

5ルーティングの追加
Laravel 5.3ルーティングについて以下の変更がある
By default, fresh Laravel 5.3 applications contain two HTTP route files in a new top-level routes directory.
routes/web.phpに次の2行を追加
Route::get('auth/weixin', 'Auth\WeixinController@redirectToProvider');
Route::get('auth/weixin/callback', 'Auth\WeixinController@handleProviderCallback');

6 WeixinController
コード実装は次のとおりです.
redirect();
    }

    public function handleProviderCallback(Request $request)
    {
        $user_data = Socialite::with('weixin')->user();
        //todo whatever
    }
}