facebook twitter hatena line email

「Php/laravel/laravel5/facebookログイン」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(facebook側で以下エラーが出る場合)
 
(同じ利用者による、間の14版が非表示)
行3: 行3:
 
https://developers.facebook.com
 
https://developers.facebook.com
  
==ソーアシャルライブラリインストール==
+
==ライブラリ公式==
 +
https://github.com/laravel/socialite#configuration
 +
 
 +
==ソーアシャルライブラリインストール or アップグレード==
 
  $ composer require laravel/socialite
 
  $ composer require laravel/socialite
 +
確認
 +
$ vi composer.json
 +
{
 +
    "require": {
 +
        "laravel/socialite": "^2.0",
  
 
==コード追加==
 
==コード追加==
行10: 行18:
 
  'providers' => [
 
  'providers' => [
 
     Laravel\Socialite\SocialiteServiceProvider::class,
 
     Laravel\Socialite\SocialiteServiceProvider::class,
],
+
 
 
  'aliases' => [
 
  'aliases' => [
 
     'Socialite' => Laravel\Socialite\Facades\Socialite::class,
 
     'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
+
 
  
 
  $ vi config/services.php
 
  $ vi config/services.php
行25: 行33:
 
  FACEBOOK_ID=xxxxxxxxx
 
  FACEBOOK_ID=xxxxxxxxx
 
  FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
  FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  FACEBOOK_CALLBACKURL=http://localhost/facebook/callback
+
  FACEBOOK_CALLBACKURL=ttp://localhost/facebook/callback
  
 
  $ vi app/Http/routes.php
 
  $ vi app/Http/routes.php
行53: 行61:
 
     public function facebookCallback()
 
     public function facebookCallback()
 
     {
 
     {
         $fuser = $this->socialite->driver('facebook')->user();
+
         try {
        $fuser->getId();
+
            $fuser = $this->socialite->driver('facebook')->user();
        $fuser->getName();
+
            $ret = array(
        $fuser->getEmail();
+
                $fuser->getId(),
        return $fuser->getEmail();
+
                $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側で以下エラーが出る場合==
行65: 行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を読み込むには、アプリ設定のアプリドメインにすべてのドメインとサブドメインを追加してください。
  1. facebook開発ページの設定/プラットフォーム追加でwebサイトを選択/ウェブURLにurlを追加
  2. 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.
  1. 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