我正在构建一个使用Facebook身份验证的网站。问题是,我一次只能有一个回调网址,所以当我在本地工作时,我使用我的localhost网址作为回调网址,当我想在Heroku上测试它时,我将其切换到真实网址。 / p>
现在没关系,因为我还没有将它发布给公众,我可以从localhost切换到真正的URL,而不必担心用户被锁定。
但是我想知道一旦我发布这个,我怎么能这样做,实际上有人使用这个服务。我很感激你的建议。 (我确定这是一个全新的问题,但是,嘿,你必须从某个地方开始)
答案 0 :(得分:1)
您可以基于每个请求指定回拨网址。您在请求中指定的任何内容都将覆盖您在应用程序设置中配置的默认回调URL。您可以通过在初始O-auth身份验证请求中传递“redirect_uri”参数来执行此操作。
以下是我在其中一个项目中使用的一些PHP代码片段:
public function authenticate(array $params) {
$scope = empty($params['scope']) ? 'email,publish_stream,offline_access' : $params['scope'];
$fb= FB::get_fb_api(); //singleton to get Facebook API object
$login_url = $fb->getLoginUrl(array(
'redirect_uri' => $GLOBALS['CONFIG']->base_url . '/fbOauth/signin_callback',
'scope' => $scope,
'display' => 'popup'
));
header("Location: $login_url");
}
如您所见,我动态设置了base_url - 因此,我的开发环境将传递与我的生产环境不同的URL。