「Php/laravel/laravel5/facebookログイン」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→facebook側で以下エラーが出る場合) |
|||
(同じ利用者による、間の9版が非表示) | |||
行6: | 行6: | ||
https://github.com/laravel/socialite#configuration | https://github.com/laravel/socialite#configuration | ||
− | ==ソーアシャルライブラリインストール== | + | ==ソーアシャルライブラリインストール or アップグレード== |
$ composer require laravel/socialite | $ composer require laravel/socialite | ||
+ | 確認 | ||
+ | $ vi composer.json | ||
+ | { | ||
+ | "require": { | ||
+ | "laravel/socialite": "^2.0", | ||
==コード追加== | ==コード追加== | ||
行28: | 行33: | ||
FACEBOOK_ID=xxxxxxxxx | FACEBOOK_ID=xxxxxxxxx | ||
FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | ||
− | FACEBOOK_CALLBACKURL= | + | FACEBOOK_CALLBACKURL=ttp://localhost/facebook/callback |
$ vi app/Http/routes.php | $ vi app/Http/routes.php | ||
行56: | 行61: | ||
public function facebookCallback() | public function facebookCallback() | ||
{ | { | ||
− | $fuser = $this->socialite->driver('facebook')->user(); | + | try { |
− | + | $fuser = $this->socialite->driver('facebook')->user(); | |
− | + | $ret = array( | |
− | + | $fuser->getId(), | |
− | + | $fuser->getName(), | |
− | + | $fuser->getEmail() | |
− | + | ); | |
− | + | print nl2br(print_r($ret,1)); | |
− | + | print nl2br(print_r($fuser,1)); | |
− | + | // Laravel\Socialite\Two\User Object | |
− | + | // ( | |
− | + | // [token] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
− | + | // [refreshToken] => | |
− | + | // [expiresIn] => 1234567 | |
− | + | // [id] => 1128206012345678 | |
− | + | // [nickname] => | |
− | + | // [name] => name1 | |
− | + | // [email] => sample@example.com | |
− | + | // [avatar] => ttps://graph.facebook.com/v2.6/1128206012345678/picture?type=normal | |
− | + | // [user] => Array | |
− | + | // ( | |
− | + | // [name] => name1 | |
− | + | // [email] => sample@example.com | |
− | + | // [gender] => male | |
− | + | // [verified] => 1 | |
− | + | // [id] => 1128206012345678 | |
− | + | // ) | |
− | + | // [avatar_original] => ttps://graph.facebook.com/v2.6/1128206012345678/picture?width=1920 | |
+ | // ) | ||
+ | } catch (ClientException $e) { | ||
+ | abort(403, "システム不具合により認証に失敗しました"); | ||
+ | } | ||
} | } | ||
} | } | ||
+ | |||
+ | ==facebook開発サイト== | ||
+ | https://developers.facebook.com/ | ||
==facebook側で以下エラーが出る場合== | ==facebook側で以下エラーが出る場合== | ||
行91: | 行103: | ||
#facebook開発ページの設定/プラットフォーム追加でwebサイトを選択/ウェブURLにurlを追加 | #facebook開発ページの設定/プラットフォーム追加でwebサイトを選択/ウェブURLにurlを追加 | ||
#facebook開発ページの設定/アプリドメインにhttpsから始まるurlを追加する | #facebook開発ページの設定/アプリドメインにhttpsから始まるurlを追加する | ||
+ | |||
+ | ==facebook側で以下エラーが出る場合2== | ||
+ | 他人がログインしようとすると出る | ||
+ | アプリが設定されていません: This app is still in development mode, and you don't have access to it. Switch to a registered test user or ask an app admin for permissions. | ||
+ | #facebook.developer/アプリレビュー/公開にチェックを入れる | ||
+ | |||
+ | ==facebookアプリレビュー申請== | ||
+ | *user_birthday:誕生日 | ||
+ | *user_age_range:「18歳未満」、「18歳以上」、または「21歳以上」のいずれであるかを確認する。 | ||
+ | *user_gender:男女判定(male,female | ||
+ | |||
+ | ==An active access token must be used to query information about the current user.エラーの場合== | ||
+ | SDKのversionがサポート切れしてないか確認する。(laravel/socialite) | ||
+ | https://developers.facebook.com/docs/apps/changelog?locale=ja_JP | ||
+ | |||
+ | ClientException in RequestException.php line 107: Client error: `GET https://graph.facebook.com/v2.6/me?access_token=&fields=name,email,gender,verified&appsecret_proof=[ハッシュ]` resulted in a `400 Bad Request` response: | ||
+ | {"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthExce (truncated...) | ||
+ | |||
==参考== | ==参考== | ||
http://qiita.com/zaburo/items/6f7c072795e99fd98a75 | http://qiita.com/zaburo/items/6f7c072795e99fd98a75 |
2018年9月22日 (土) 00:31時点における最新版
目次
facebookAppのID取得
以下でAppIDとapp secretを取得 https://developers.facebook.com
ライブラリ公式
https://github.com/laravel/socialite#configuration
ソーアシャルライブラリインストール or アップグレード
$ composer require laravel/socialite
確認
$ vi composer.json { "require": { "laravel/socialite": "^2.0",
コード追加
$ vi config/app.php 'providers' => [ Laravel\Socialite\SocialiteServiceProvider::class,
'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
$ vi config/services.php 'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_CALLBACKURL'), ],
$ vi .env FACEBOOK_ID=xxxxxxxxx FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx FACEBOOK_CALLBACKURL=ttp://localhost/facebook/callback
$ vi app/Http/routes.php Route::group(['middleware' => 'web'], function () { Route::get('facebook','FacebookController@facebookLogin'); Route::get('facebook/callback','FacebookController@facebookCallback'); });
$ vi app/Http/Controller/FacebookController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Laravel\Socialite\Contracts\Factory as Socialite; class FacebookController extends Controller { protected $socialite; public function __construct(Socialite $socialite) { $this->socialite = $socialite; } public function facebookLogin() { return $this->socialite->driver('facebook')->redirect(); } public function facebookCallback() { try { $fuser = $this->socialite->driver('facebook')->user(); $ret = array( $fuser->getId(), $fuser->getName(), $fuser->getEmail() ); print nl2br(print_r($ret,1)); print nl2br(print_r($fuser,1)); // Laravel\Socialite\Two\User Object // ( // [token] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // [refreshToken] => // [expiresIn] => 1234567 // [id] => 1128206012345678 // [nickname] => // [name] => name1 // [email] => sample@example.com // [avatar] => ttps://graph.facebook.com/v2.6/1128206012345678/picture?type=normal // [user] => Array // ( // [name] => name1 // [email] => sample@example.com // [gender] => male // [verified] => 1 // [id] => 1128206012345678 // ) // [avatar_original] => ttps://graph.facebook.com/v2.6/1128206012345678/picture?width=1920 // ) } catch (ClientException $e) { abort(403, "システム不具合により認証に失敗しました"); } } }
facebook開発サイト
https://developers.facebook.com/
facebook側で以下エラーが出る場合
URLを読み込めません: このURLのドメインはアプリのドメインに含まれていません。このURLを読み込むには、アプリ設定のアプリドメインにすべてのドメインとサブドメインを追加してください。
- facebook開発ページの設定/プラットフォーム追加でwebサイトを選択/ウェブURLにurlを追加
- facebook開発ページの設定/アプリドメインにhttpsから始まるurlを追加する
facebook側で以下エラーが出る場合2
他人がログインしようとすると出る
アプリが設定されていません: This app is still in development mode, and you don't have access to it. Switch to a registered test user or ask an app admin for permissions.
- facebook.developer/アプリレビュー/公開にチェックを入れる
facebookアプリレビュー申請
- user_birthday:誕生日
- user_age_range:「18歳未満」、「18歳以上」、または「21歳以上」のいずれであるかを確認する。
- user_gender:男女判定(male,female
An active access token must be used to query information about the current user.エラーの場合
SDKのversionがサポート切れしてないか確認する。(laravel/socialite) https://developers.facebook.com/docs/apps/changelog?locale=ja_JP
ClientException in RequestException.php line 107: Client error: `GET https://graph.facebook.com/v2.6/me?access_token=&fields=name,email,gender,verified&appsecret_proof=[ハッシュ]` resulted in a `400 Bad Request` response: {"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthExce (truncated...)