質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3887閲覧

Laravelで作成したWebサイトにFacebook認証を入れたいがエラーが出てしまう

YorihiroKatsuki

総合スコア70

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2016/11/21 17:31

###前提・実現したいこと
laravelで作成したWebサイトにFacebook認証を入れたいと考えています。
やりたいのは、
「Facebook登録」ボタンをクリックするとFacebookの認証画面が出てきて、「○○でログイン」ボタンをクリックするとTOPにリダイレクトする、といったよくあるやつです。

今回はLaravelの拡張パッケージであるSocialiteを使って実現しようとしています。

###発生している問題・エラーメッセージ
http://qiita.com/zaburo/items/6f7c072795e99fd98a75
こちらのサイトを参考に、
・facebookアプリの作成
・socialiteのインストール
・configへの追記
・.envへのfacebook_id等の追記
・Routeの記述
・controllerの記述
を行った上でfacebookログインボタンをクリックすると以下のエラーメッセージが発生します。
(多少コードは変えていますので以下のソースコードを参考にして下さい)

また、開発環境はcloud9を利用しています。

Client error: `POST https://graph.facebook.com/oauth/access_token` resulted in a `400 Bad Request` response: {"error":{"message":"Missing redirect_uri parameter.","type":"OAuthException","code":191,"fbtrace_id":"xxxxxxxxxxxx"}}

###該当のソースコード

Cntroller

<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Http\Requests; use Laravel\Socialite\Contracts\Factory as Socialite; class SocialController extends Controller { protected $socialite; public function __construct(Socialite $socialite){ $this->socialite = $socialite; } /** * Redirect the user to the Facebook authentication page. * (Facebook認証のページにリダイレクトする) * @return Response(レスポンスを返す) */ public function getFacebookAuth(){ return $this->socialite->driver('facebook') ->with([ 'app_id' => 123456789, 'redirect_uri' => 'https://xxxx-xxxxx.c9users.io/auth/login/callback/facebook' ]) ->redirect(); } /** * Obtain the user information from Facebook. * (facebookのユーザー情報を入手する) * @return Response */ public function getFacebookAuthCallback(){ try{ $fuser = $this->socialite->driver('facebook')->user(); }catch(\Exception $e){ //このエラーメッセージが表示されている var_dump($e); exit(); } if($fuser){ //とりあえず$fuserを表示 dd($fuser); }else{ return "something went wrong"; } } }

config/app.php

<?php //providers Laravel\Socialite\SocialiteServiceProvider::class, //providers 'Socialite' => Laravel\Socialite\Facades\Socialite::class,

config/services.php

'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_CALLBACKURL'), ],

.env

FACEBOOK_ID=123456789 FACEBOOK_SECRET=xxxxxxxxxxxxxxxxxx FACEBOOK_CALLBACKURL=https://xxxx-xxxxx.c9users.io/auth/login/callback/facebook

Route

Route::get('auth/login/facebook','Auth\SocialController@getFacebookAuth'); Route::get('auth/login/callback/facebook','Auth\SocialController@getFacebookAuthCallback');

ちなみにgetFacebookAuth()with()を使ってapp_idとredirect_uriをパラメータに設定しているのは、これ無しだと、facebook側のエラーで、

The parameter app_id is required

だったり、

The parameter redirect_url is required

が表示されてしまったからです。

ちなみに、Facebookアプリ側での設定は以下の形になります。
(中身は実際のものと変えています)

・アプリID:123456789(.envのFACEBOOK_IDと同様) ・app secret:xxxxxxxxxxxxxxxxxx(.envのFACEBOOK_SECRETと同様) ・有効なOAuthリダイレクトURI:https://xxxx-xxxxx.c9users.io/

また、ログインしようとしたfacebookアカウントはfacebookの管理者アカウントです。

###試したこと
検索でSocialiteを使ったFacebook認証のやり方を調べてそれ通りにやってみましたがエラーは解消しませんでした。

エラーの内容的にredirect_uriが無い、みたいなことが書かれているのですが、必要な箇所には設定しているため何が原因なのかわかりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境:cloud9
言語:PHP
フレームワーク:laravel5.2
パッケージ:Socialite

追加で必要な情報がございましたら教えていただければと思います。

いろいろ自分でやってみましたがうまくいかなかったので投稿させていただきました。
どうかご助力頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

this->socialite->driver('facebook')
でパラメータが読み込めてないのではないでしょうか?
.envが読み込めてないのか?なんなのかは不明ですが、一旦直記述してみてはいかがでしょうか?

'facebook' => [ 'client_id' => 12345678,

投稿2016/11/22 01:21

kaji

総合スコア648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YorihiroKatsuki

2016/11/23 09:10

ご回答ありがとうございます! 残念ながら直記述でやってみましたがダメでした。。 chromeのデベロッパーツールでRequestURLを確認したところ、 https://www.facebook.com/v2.8/dialog/oauth?client_id=xxxxxxxxxxxxx&redirect_uri=https%3A%2F%2Fxxxxxx-xxxxx.c9users.io%2Fauth%2Flogin%2Fcallback%2Ffacebook%2F&scope=email&response_type=code&state=xxxxxxxxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxxxxx といった感じでちゃんとredirect_uriも入っているのですが、何か他に思い当たることはございませんでしょうか? ちなみにレスポンスヘッダのLocationには以下のようなURLが入っています。 https://xxxxxxx-xxxxxxx.c9users.io/auth/login/callback/facebook/?code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx#_=_ もし難しいようでしたら同じエラーがもしかしたら出るかもしれませんが、facebookSDK for PHPでやり直してみようと思っています。
kaji

2016/11/23 10:36

こちらに追加しなければparamが設定できないのであれば ```ここに言語を入力 return $this->socialite->driver('facebook') ->with([ 'app_id' => 123456789, 'redirect_uri' => 'https://xxxx-xxxxx.c9users.io/auth/login/callback/facebook' ]) ->redirect(); ``` ためしにこちらにも記述してみてはどうですか? ```ここに言語を入力 $fuser = $this->socialite->driver('facebook')->user(); ``` ```ここに言語を入力 $fuser = $this->socialite->driver('facebook') ->with([ 'app_id' => 123456789, 'redirect_uri' => 'https://xxxx-xxxxx.c9users.io/auth/login/callback/facebook' ]) ->user(); ```
YorihiroKatsuki

2016/11/27 11:15

ありがとうございます! ご返信が遅くなり申し訳ございません。 残念ながら上記試しましたが同じエラーでしたので、 facebookSDK for PHPを使ってやり直してみています。 ただ、今度は「エラーが発生しました。すみやかに解決できるよう作業しております。」 というfacebook側のエラー文言が出てきてしまいました。 ネットで調べてみると1日経ったら戻った、といったコメントがありましたのでひとまず待ってみようと思います。 このたびはお忙しいところありがとうございました。
kaji

2016/11/27 11:23

facebook側のエラーだったんですね。
YorihiroKatsuki

2016/11/27 16:06

いえ、socialiteの時のエラーとは異なるエラーのようです。 ちなみに、先ほどの「エラーが発生しました、、」は解決したのですが、また別のエラーが発生してしまいました。。 このスレッドで何度も質問させていただくのは申し訳なかったので、新しく質問投稿しています。 もしお時間ございましたら是非ご協力頂けますと幸いです。 ↓こちらがURLです。 https://teratail.com/questions/56780?modal=q-comp 解決はできていませんが、いろいろとご協力頂いたので、こちらはベストアンサーにさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問