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

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

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

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Facebook

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

1回答

2804閲覧

facebookログイン認証でユーザー情報が取得できない(opauth)

isoyan

総合スコア45

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Facebook

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2015/08/11 23:11

現在facebookでのログイン機能を実装しようとしており、苦戦しているため、質問させていただきます。
Opauthを使用しており、以下のサイトを参考に実装しています。
http://www.kaasan.info/archives/2694
http://shigurui.kirscheweb.com/?p=136

twitterでdebug($this->data);とするとユーザー情報を取得できるのですが、
facebookだと以下のようなデータが返ってきますが、どのようにしたらユーザー情報を取得できるかご教示いただければと助かります。

array(
'error' => array(
'provider' => 'Facebook',
'code' => 'access_token_error',
'message' => 'Failed when attempting to obtain access token',
'raw' => null
),
'timestamp' => '2015-08-12T01:04:57+02:00',
'validated' => false
)

また上記画面が表示される前に一度キャプチャのような画面が表示されてから遷移します。

リソースとしては以下のように実装しています。
[bootstrap.php]
CakePlugin::load('Opauth', array('routes' => true, 'bootstrap' => true));

/**

  • Facebook認証のためのstrategy

*/
Configure::write('Opauth.Strategy.Facebook', array(
'app_id' => 'XXXXXX',
'app_secret' => 'XXXXX'
));

[routes.php]
Router::connect(
'/opauth-complete/*',
array('controller' => 'users', 'action' => 'opauth_complete')
);
/**

  • ...and connect the rest of 'Pages' controller's URLs.

/
Router::connect('/pages/
', array('controller' => 'pages', 'action' => 'display'));

/**

  • Load all plugin routes. See the CakePlugin documentation on
  • how to customize the loading of plugin routes.

*/
CakePlugin::routes();

[UsersController.php]
......
public function opauth_complete() {
$this->set('userInfo', $this->Auth->user());
debug($this->data);
}

なおfacebook apikeyとapisecretは取得しています。

イメージ説明

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

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

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

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

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

guest

回答1

0

Facebook APIのエラー内容はOAuthに必要なaccess_tokenが与えられていない、というエラーです。これはOAuthのコンシューマーがプロバイダを利用する際、識別するために必要なトークンです。たぶんこれが取得できていないのだと思います。

Opauthをインストールされているようなので、 CakePHPでOpauthを使ってFacebook認証 を参考に環境を構築されたのでしょうか?

FacebookのStrategyはインストール済みでしょうか?

投稿2015/08/12 01:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

isoyan

2015/08/12 02:16

回答ありがとうございます。 > CakePHPでOpauthを使ってFacebook認証を参考に環境を構築されたのでしょうか? はい。こちらのサイトを参考にしました。 >FacebookのStrategyはインストール済みでしょうか? app/Plugin/Opauth/Strategy/Facebookに Strategyを配置しています。 インストールしてきたフォルダをFacebookに名前を変えてStrategy配下に配置しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問