web-dev-qa-db-ja.com

Facebook APIエラー191

私は自分のプロジェクトを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アプリケーションの設定と関係があるのは明らかですが、何が見えるのかわかりません!

76
musoNic80

UPDATE:
APIエラーコードに回答するには:191
redirect_uriは、サイトURLと同じ(または相対的)である必要があります。
enter image description here

ヒント:特定のページを指す完全な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/フォルダーに入れました。

しかし、私はあなたと同じエラーを受け取りました! XAMPPhttp://localhost/fblocal/への自動リダイレクトを行っていることに気づいたので、設定を単にhttp://localhost/fblocal/に変更し、エラーがなくなったしかしアプリケーションを( プライバシー設定 から)削除し、アプリケーションを再インストールする必要がありました。結果は次のとおりです。
alt text

その後、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;
    }
}

結果: alt text

88
ifaour

私にとっては、アプリドメインがありませんでした。アプリに移動し、サイトのルートがアプリドメインとして設定されていることを確認します。スクリーンショットを参照してください。

app domains is in the basic settings of your app

11
Mike_K

これは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はアプリケーション構成で許可されません」というエラーが発生します。

8
devudilip

Facebook認証方法を使用しているときにも、同じ問題に直面していました。しかし、Facebook api(Apps >> My App >> Basic)の以下の変更に関する問題を修正します。

  1. ===>で指定したURLを削除しましたFacebookのアプリ(Canvas URL)
  2. ===> FacebookログインのあるWebサイトオプションでのみサイトのURLを指定しました

次に、WebページでそのAppIdとApp Secretを提供しました。

そのため、ログインボタンをクリックして、アクセス許可を要求し、それをリダイレクトしてURLを提供します(FacebookログインのあるWebサイト)。

2
ShivarajRH

ローカルで作業しています...フィードAPIを機能させることはできませんでしたが、共有APIはほとんど問題なく機能しました。

0
chim

同じ問題がありました:

$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();
}
0
ggzone

これはGoogleのエラー191の最初の質問なので、私が追加したいもの:

署名済みのリクエストで自分のサイトではなくFacebookにリダイレクトする場合、ユーザーが安全なブラウジングをオンにしていて、アプリがSSLなしでFacebookにリダイレクトすると、このエラーが発生する可能性があります。

0
Barnaba

facebookアプリページで、基本タブに移動します。 「FacebookログインのあるWebサイト」オプションを見つけます。

サイトのURLが表示されます:入力して完全なURLを入力します(たとえば http://Mywebsite.com/MyLogin.aspx )。これは、アプリIDが123456789の場合のように、呼び出しで使用できるURLです

https://graph.facebook.com/oauth/authorize?client_id=123456789&redirect_uri=http://Mywebsite/MyLogin.aspx&scope=publish_actions

0
Partha

あなたがあなたのウェブサイトをセションの下で指定しても-Facebookログインのあるウェブサイト->サイトのURLなど http://example.com 。ただし、App Domainsセクションが空で、www.example.comとしてWebサイトを開くと、このエラーも発生します。 「App Domains」セクションでこれを回避するには、www.example.com、something.example.comなどのサブドメインを許可するexample.comを記述します。

0
dav

コールバック関数のFacebookRedirectLoginHelper::getAccessToken()にリダイレクトURLを渡すことでこれを修正しました。

からの変更

try {
        $accessToken = $helper->getAccessToken();
}
...

try {
        $accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...

Vagrant Boxで開発していますが、FacebookRedirectLoginHelper::getCurrentUrl()に有効なURLの生成に問題があるようです。

0
Kyrre