私は自分のプロジェクトをFacebookと統合しようとしています。私は最初に赤ちゃんの一歩を踏み出し、ログインしてFacebookセッションを取得し、ユーザーデータを取得しようとしています。 Facebookアプリケーションの設定は次のとおりです。
site URL: http://127.0.0.1:8888/mySite/
キャンバスのURLは上記と同じです。サイトドメインを指定していません。
ただし、ログインボタンをクリックすると、エラーが発生します。
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: redirect_uri is not owned by the application.
現時点では、リダイレクトなどに対処するためのサーバー側コードを作成していません。Facebook forのチュートリアルに基づいてJavaScript SDKを追加するだけですウェブサイト。
私は何を間違えましたか? Facebookアプリケーションの設定と関係があるのは明らかですが、何が見えるのかわかりません!
UPDATE:
APIエラーコードに回答するには:191redirect_uri
は、サイトURLと同じ(または相対的)である必要があります。
ヒント:特定のページを指す完全なURLの代わりにベースURLを使用します。
非推奨:たとえば、www.mydomain.com/fb/test.html
をサイトのURLとして使用し、www.mydomain.com/fb/secondPage.html
としてredirect_uri
thisを使用する場合191エラーが表示されます。
推奨:その代わり、サイトURLを次のようなベースURLに設定します:www.mydomain.com/
OR www.mydomain.com/fb/
。
私はFacebookを調べました Pythonサンプルアプリケーション 今日、私はショックを受けましたhttp://localhost:8080/
をサイトURLローカルで開発している場合:
サイトURLを構成し、Webサーバーをポイントします。ローカルで開発している場合は、 http:// localhost:8080 / を使用できます
私はそれができないと確信していましたが、私自身の経験に基づいて(非常に古いテストですが)実際にはCANFacebookアプリケーションをローカルでテストします!
そこで、古いアプリケーションを選択し、その名前、サイトURL、キャンバスURLを編集しました:サイトURL:http://localhost:80/fblocal/
最新の Facebook PHP-SDK をダウンロードして、xampp/htdocs/fblocal/
フォルダーに入れました。
しかし、私はあなたと同じエラーを受け取りました! XAMPP がhttp://localhost/fblocal/
への自動リダイレクトを行っていることに気づいたので、設定を単にhttp://localhost/fblocal/
に変更し、エラーがなくなったしかしアプリケーションを( プライバシー設定 から)削除し、アプリケーションを再インストールする必要がありました。結果は次のとおりです。
その後、publish_stream
パーミッションを要求し、プロファイルに公開できました(PHP-SDKを使用):
$user = $facebook->getUser();
if ($user) {
try {
$post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!'));
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
結果:
私にとっては、アプリドメインがありませんでした。アプリに移動し、サイトのルートがアプリドメインとして設定されていることを確認します。スクリーンショットを参照してください。
これはURLの間違いが原因です。
指定されたWebサイトのURLはすべて正しいはずです。
ウェブサイトのURLをhttp://localhost:3000/
として、ドメインをlocalhostとして言及しましたが、ブラウザーではhttp://0.0.0.0:3000/
を実行していました。
サーバーをlocalhost:3000
として実行すると、問題は解決しました。
前述したように、localhostのFacebookとしてのサイトURLは同じものにリダイレクトされます。0.0.0.0:3000
を実行している場合、「指定されたURLはアプリケーション構成で許可されません」というエラーが発生します。
Facebook認証方法を使用しているときにも、同じ問題に直面していました。しかし、Facebook api(Apps >> My App >> Basic
)の以下の変更に関する問題を修正します。
次に、WebページでそのAppIdとApp Secretを提供しました。
そのため、ログインボタンをクリックして、アクセス許可を要求し、それをリダイレクトしてURLを提供します(FacebookログインのあるWebサイト)。
ローカルで作業しています...フィードAPIを機能させることはできませんでしたが、共有APIはほとんど問題なく機能しました。
同じ問題がありました:
$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev');
$facebook->getLoginUrl($params);
Redirect_uriをdevloperページからライブページに変更すると、191エラーが発生しました。
そこで、$ paramsを削除しました。
$facebook->getLoginUrl();
アプリのリクエスト後、FBはアプリのURL自体にリダイレクトします。例:my.domain.com
私が今やっていることは、FB iframe内にいるかどうかにかかわらず、アプリのindex.phpをチェックインすることです。そうでない場合、ライブFBページにリダイレクトしますf.e .:
$app = 'facebook.com/pages/foobar-live';
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_Host) : false;
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) {
echo '<script>window.parent.location = "'.$app.'";</script>';
die();
}
これはGoogleのエラー191の最初の質問なので、私が追加したいもの:
署名済みのリクエストで自分のサイトではなくFacebookにリダイレクトする場合、ユーザーが安全なブラウジングをオンにしていて、アプリがSSLなしでFacebookにリダイレクトすると、このエラーが発生する可能性があります。
facebookアプリページで、基本タブに移動します。 「FacebookログインのあるWebサイト」オプションを見つけます。
サイトのURLが表示されます:入力して完全なURLを入力します(たとえば http://Mywebsite.com/MyLogin.aspx )。これは、アプリIDが123456789の場合のように、呼び出しで使用できるURLです
あなたがあなたのウェブサイトをセションの下で指定しても-Facebookログインのあるウェブサイト->サイトのURLなど http://example.com 。ただし、App Domainsセクションが空で、www.example.comとしてWebサイトを開くと、このエラーも発生します。 「App Domains」セクションでこれを回避するには、www.example.com、something.example.comなどのサブドメインを許可するexample.comを記述します。
コールバック関数のFacebookRedirectLoginHelper::getAccessToken()
にリダイレクトURLを渡すことでこれを修正しました。
からの変更
try {
$accessToken = $helper->getAccessToken();
}
...
に
try {
$accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...
Vagrant Boxで開発していますが、FacebookRedirectLoginHelper::getCurrentUrl()
に有効なURLの生成に問題があるようです。