具有Facebook App的多级域名

时间:2013-10-10 13:25:44

标签: php facebook facebook-graph-api facebook-php-sdk

我们运行一个服务于多个顶级域名的Web应用程序。我们目前正在尝试通过OAuth(Google,Facebook,Twitter)对用户进行身份验证。

我们遇到的最初问题是Google不支持访问多个顶级域名。为了解决这个问题,我们通过一个顶级域代理流量,它只是充当中介,将请求转发给oAuth提供商并回调到我们不同的顶级域。这一切都适用于谷歌,但不适用于Facebook。

Facbook会做一些不同的事情,它会检查你当前的网址是否是a)是否在app域中? b)在请求初始OAuth对话时,它是否与使用的uri相同?

我们的流程是这样的。

请求权限 顶级域名 - >代理 - > Facebook OAuth

回调 Facebook OAuth - >代理 - >顶级域名

由于当用户允许权限时,重定向URL设置为代理URL,因此我无法使用初始顶级域从api获取任何信息。

产生的异常是:{“error”:{“message”:“验证验证码时出错。请确保您的redirect_uri与您在OAuth对话框请求中使用的redirect_uri相同”,“输入”:“OAuthException” “代码”:100}}

任何人都有任何线索如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

PHP SDK允许您传入另一个redirect_uri:

$login_url = $facebook->getLoginUrl( array( 'redirect_uri' => '{TLD URL}', 'scope' => '{SCOPE}' ) );

Facebook App Settings页面还允许您设置多个域或子域以用于您的应用程序,因此请确保您的基本域都已添加到设置页面(App Domains下)。

使用这两种方法可以解决问题。