给定的URL未被应用程序配置允许。

14

我正在尝试在我的Chrome扩展程序中使用Facebook JavaScript SDK。由于它是一个Chrome扩展程序,我应该如何将其与Facebook集成?它是在facebook.com上的应用程序还是网站?

目前,我已将其设置为网站。

我的站点URL在设置中是: http://localhost/Users/home/Documents/facebook/

我还启用了我的Mac上的Web共享功能。

我需要设置站点域名吗?我做错了什么?


你究竟想用fb api做什么? - serg
我正在尝试编写一个简单的示例,使用getLoginStatus来识别登录状态。 - Praveen
我发现这是最直接的答案,https://dev59.com/jWEi5IYBdhLWcg3w0fJR#20990921 - Eat at Joes
4个回答

19
http://localhost/Users/home/Documents/facebook/ 输入到开发者应用程序的“网站域”中:

https://developers.facebook.com/apps/{api_key}/summary

将 {api_key} 替换为您自己的密钥;或者在https://developers.facebook.com上查找链接。
有趣的是,Facebook允许您将任何内容输入到域中,因此它可以是离线URL(例如localhost或本地端口),Facebook会在身份验证后将其重定向。

如果您尝试这样做,您将收到以下消息:错误 应用程序域名:http://localhost/Users/home/Documents/facebook/ 不应包含协议信息。 - Luis Perez
4
不要混淆“站点域名”和“应用程序域名”。要查看“站点域名”选项,您必须勾选“使用Facebook登录的网站”,使其变为绿色,这将显示文本框。 - Luis Perez
谢谢你的建议!PS:需要提供整个URL,而不仅仅是“localhost”。有任何想法为什么? - Nimo

6
如果您在 hosts 文件中添加一个指向您给 Facebook 的根域的任何子域的条目,那么您可以在本地测试 Facebook 应用程序。例如,如果您的域是 example.com,则可以在 hosts 文件中添加一个指向 localhost(127.0.0.1)的 fbtest.example.com 条目。
这样,您就可以在本地进行测试,而无需编辑 Facebook 应用程序配置(假设本地服务器设置为为所有子域提供相同的内容)。
或者,如果确实需要精确的域名,您也可以只添加根域的条目。这意味着在测试时您将无法访问实时站点。

非常好用。而且是一个很好的答案,因为你不必搞乱你的Facebook配置。 - xgretsch

3
为了开发和发布Facebook应用程序,您必须提供一个可通过Web访问的URL,以供Facebook进行查询。如果您有可以上传或将IP地址提供给Web供Facebook调用的网络空间,则可以解决您的问题。
Facebook允许您在框中放入几乎任何有效的URL,但是当您尝试将其用于登录或一般用途时,您将开始注意到错误,因为Facebook的爬虫无法获取该URL。

那么我可以把所有的文档上传到云端,然后将云端文件夹的链接作为站点URL输入吗? - Praveen
没错,在理论上应该可以。有很多免费的地方可以上传并尝试它。一旦Facebook的代码可以验证它来自经过身份验证的URL,一切都应该开始工作了。 - Francis Pelland
URL不必是Web可访问的,您正在访问的域名只需匹配即可。IP地址可以完全是您本地网络上的私有地址。请参见我的答案。 - Michael Mior
我设置了一个家庭 Web 服务器并提供了链接到 Chrome 扩展文件夹。但是我仍然得到相同的错误。 - Praveen
@Michael:我所做的只是调用Fb.init(),其中提到了JavaScript Facebook Connect SDK。 - Praveen
我不明白你所提到的“Chrome扩展文件夹”的引用。无论如何,你需要通过Facebook授权的域名访问你的本地机器,就像我在我的回答中提到的那样。 - Michael Mior

3
请查看https://developers.facebook.com/docs/authentication/中的“桌面应用程序”部分。该部分解释了如何进行身份验证,其中没有涉及服务器,这是针对桌面应用程序的,但浏览器工具栏应以类似方式工作。请注意保留HTML标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接