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

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

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

Facebook Graph APIとは Facebookのグラフデータベース用のAPIであり、対応言語はPHP、Perl、ActionScript、JavaScriptなどがあります。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Facebook

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

Q&A

1回答

520閲覧

facebook SDK &PHPを使用したログインがエラーでできない

kazuh1r010

総合スコア23

Facebook Graph API

Facebook Graph APIとは Facebookのグラフデータベース用のAPIであり、対応言語はPHP、Perl、ActionScript、JavaScriptなどがあります。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Facebook

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

0グッド

0クリップ

投稿2018/07/10 07:17

こんにちわ、私は、現在PHPでfacebook SDKを使って、
自動投稿を視野に入れた、プログラムを製作しております。

投稿時にaccess_tokenが必要になるので、まずは、ログインをして
値を取得したいと考えて製作しておりました。

しかしながら、以下のようなエラーが出てしまい、ログインができません。
エラー画像

webで調べた限りでは、SDKのバージョンの古さや有効な「OAuthリダイレクトURL」の
値の間違えや記入をしていなかったなどで、解決されている方がいますが
私のケースでは、解決できませんでした。

コードは、以下のようになっております。

PHP

1<?php 2session_start(); 3 4ini_set( 'display_errors', 1 ); 5ini_set( 'error_reporting', E_ALL ); 6 7// アプリのApp ID 8define('MY_APP_ID', 'xxxxxxxxxxxx'); 9// アプリのApp Secret 10define('MY_APP_SECRET', 'xxxxxxxxxxxx'); 11// autoload.phpの場所(パス)を記載 12require_once __DIR__ . '/php-graph-sdk-5.x/src/Facebook/autoload.php'; 13 14$fb = new Facebook\Facebook(array('app_id' => MY_APP_ID, 'app_secret' => MY_APP_SECRET, 'default_graph_version' => 'v2.9')); 15$helper = $fb->getRedirectLoginHelper(); 16 17if(isset($_GET['code'])){ 18 try { 19 $access_token = $helper->getAccessToken(); 20 } catch(Facebook\Exceptions\FacebookResponseException $e) { 21 echo 'Graph returned an error: ' . $e->getMessage(); 22 exit; 23 } catch(Facebook\Exceptions\FacebookSDKException $e) { 24 echo 'Facebook SDK returned an error: ' . $e->getMessage(); 25 exit; 26 } 27 28 if (isset($access_token)) { 29 var_dump($fb->get('/me/accounts', $access_token)); 30 } 31} else { 32 $this_url = (empty($_SERVER['HTTPS'])?'http://':'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 33 $permissions = array('manage_pages', 'publish_pages'); 34 $login_url = $helper->getLoginUrl($this_url, $permissions); 35 echo '<a href="' . $login_url . '">Log in with Facebook!</a>'; 36} 37

参考URL>
Facebook SDK v5 for PHPを使ってFacebookページに自動投稿する方法
「このURLのドメインはアプリのドメインに含まれていません」のエラーが出る。
FaceBookログインがエラーが発生。SDKのバーションをv5.6系に上げて解決。

SDK:php-graph-sdk-5.x
https://github.com/facebook/php-graph-sdk

また、他におかしいと思われる部分が
グラフAPIエクスプローラにて、access_tokenを取得してみようと
me/accountsで取得してみたところ以下のような返り値で値がありませんでした。
グラフAPIエクスプローラ

どなたか原因がお分かりになる方いらっしゃいますでしょうか?
ご教授よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

(質問からしばらくたっていますがググってたどり着く人がいるかもしれないので書いておきます)
今日同様のFacebookResponseExceptionが発生しました。
原因と解決した方法を事例の一つとして書いておきます。

イメージ説明

[原因]
HTTPSを強制 を「はい」にしていたら、リダイレクトURIにパラメータ「enforce_https=1」が自動で追加されるようになりました。そのため、自分で設定した「OAuthリダイレクトURI」と突然一致しなくなった。というのが原因です。ここ数日で起きたFacebook側の変更でした。

[解決方法]
HTTPSを強制 を「いいえ」にする。または「OAuthリダイレクトURI」のパラメータに「enforce_https=1」を追加して解決しました。

catchした例外中のredirect_uriを見てみてください。enforce_https=1が付与されていればこの事例です。

投稿2018/08/31 07:30

uran

総合スコア46

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問