Facebook API错误191
-
11-10-2019 - |
题
我正在尝试将我的项目与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用于网站.
我做错了什么?显然,这与我的Facebook应用程序设置有关,但我看不到什么!
解决方案
更新:
回答API错误代码:191
这 redirect_uri
应与站点URL相等(或相对)。
小费: 使用基本URL,而不是指向特定页面的完整URL。
不建议: 例如,如果您使用 www.mydomain.com/fb/test.html
作为您的网站URL和 www.mydomain.com/fb/secondPage.html
作为 redirect_uri
这将为您带来191个错误。
推荐的: 因此,将您的网站URL设置为基本URL,例如: www.mydomain.com/
或者 www.mydomain.com/fb/
.
我经历了Facebook Python样本应用 今天,我是 震惊 它清楚地说您可以使用 http://localhost:8080/
作为 网站URL 如果您在本地开发:
配置网站URL,并将其指向您的Web服务器。如果您在本地开发,则可以使用 http:// localhost:8080/
当我 曾是 当然,您不能根据我自己的经验(虽然非常古老的测试)做到这一点 能够 本地测试您的Facebook应用程序!
因此,我拿起了我的旧应用程序,并编辑了其名称,网站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错误。
任何指定的网站URL都应正确。
我提到网站URL为 http://localhost:3000/
和域名为Local主机,但是在我的浏览器中,我正在运行 http://0.0.0.0:3000/
.
当我运行服务器作为 localhost:3000
它解决了问题。
正如我提到的,如果我们正在运行0.0.0.0:3000
, ,将会出现错误,即“应用程序配置不允许给定URL”。
当我使用Facebook身份验证方法时,我也面临着同样的问题。但是我通过以下更改Facebook API纠正了这个问题(Apps >> My App >> Basic
).
- 我删除了我给出的URL ===> 在Facebook上的应用 (帆布URL)
- 我只给网站URL in ===> 网站带Facebook登录 选项
然后,我在网页中给出了这个苹果和应用程序的秘密。
因此,通过单击登录按钮,它要求获得访问权限,然后重定向以提供URL(网站带Facebook登录 ).
也有同样的问题:
$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev');
$facebook->getLoginUrl($params);
当我将Redirect_uri从Devloper页面更改为实时页面时,出现了191个错误。
因此,我删除了$ params:
$facebook->getLoginUrl();
在App-Request之后,现在FB重定向到应用程序URL本身FE:my.domain.com
我现在要做的是在我的应用程序中检查index.php是否在fb iframe中。如果不是,我将重定向到实时FB页面FE:
$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();
}
我还注意到,即使您在Secion下指定了您的网站 - 网站使用Facebook登录 - >网站URL为EG http://example.com, ,但是,如果您的应用域部分为空,并且您以www.example.com打开网站,您也会收到此错误。为了避免在“应用域”部分Write Example.com中,它将允许子域,例如www.example.com,sometsing.example.com等
在Facebook应用程序页面中,获取基本选项卡。查找“具有Facebook登录的网站”选项。
您会找到网站URL:输入放置完整的URL(例如 http://mywebsite.com/mylogin.aspx )。这是您可以与呼叫一起使用的URL,例如应用程序ID为123456789
我想添加的东西,因为这是错误191在Google上的第一个问题:
当重定向到Facebook而不是您自己的网站以寻求签名请求时,如果用户可以使用安全浏览,并且您的应用程序确实无需SSL将其重定向到Facebook,则可能会遇到此错误。
在当地工作...我无法让feeds API工作,但是Share Share API立即起作用,没有任何问题。
我通过将重定向URL传递到 FacebookRedirectLoginHelper::getAccessToken()
在我的回调功能中:
从
try {
$accessToken = $helper->getAccessToken();
}
...
至
try {
$accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...
我正在流浪盒子上开发,似乎 FacebookRedirectLoginHelper::getCurrentUrl()
存在生成有效URL的问题。