代码之家  ›  专栏  ›  技术社区  ›  pmichael16

使用启用严格模式的Facebook PHP SDK登录时出错

  •  9
  • pmichael16  · 技术社区  · 7 年前

    我收到了来自Facebook的通知,说他们将使来自未在有效OAuth重定向URI中列出的URI的调用无效 2018年3月 我认为他们要求我们 启用严格模式 用于重定向URI。可以找到有关此的链接 here .

    我已经在禁用严格模式的情况下使用他们的PHP SDK一年了,没有任何问题,但是当我启用严格模式并将重定向url放在那里时,它是: https://nino-dot-dynamic-osprey-93721.appspot.com/admin/fb-callback_admin.php -每次我尝试登录Facebook时,它都会返回一个错误,如下所示:

    Graph returned an error: Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.
    

    注意,我只是使用FB的默认PHP SDK登录代码( https://developers.facebook.com/docs/php/howto/example_facebook_login )已登录。php和fb回调。php链接,我没有使用任何自定义OAuth工作流。

    我注意到生成的重定向URL包含 密码 状态 参数:

    site.com/admin/fb-callback_admin.php?code=somecode&state=somestate
    

    我想这就是为什么我会出错的原因,因为它只需要重定向URL https://nino-dot-dynamic-osprey-93721.appspot.com/admin/fb-callback_admin.php 没有任何后续参数。

    考虑到重定向URL通过以下代码的响应,您认为如何绕过启用严格模式的问题:

    $helper = $fb->getRedirectLoginHelper();
    $permissions = ['email']; // Optional permissions
    $loginUrl = $helper->getLoginUrl('https://nino-dot-dynamic-osprey-93721.appspot.com/admin/fb-callback_admin.php', $permissions);
    echo htmlspecialchars($loginUrl);
    

    默认情况下是从FB的PHP SDK生成的吗?

    2 回复  |  直到 7 年前
        1
  •  27
  •   Simon Lenaerts    7 年前

    改变

    $accessToken = $helper->getAccessToken()   
    

    $accessToken = $helper->getAccessToken('http://www.example.com/admin/fb-callback_admin.php');
    

    我也有同样的问题,并在这个帖子中找到了答案,这似乎解决了我的问题:

    Graph returned an error: Can't Load URL: The domain of this URL isn't included in the app's domains

    虽然不知道为什么会这样,但很高兴这样做了。

        2
  •  4
  •   Shobi    6 年前

    我也面临着同样的问题,实际上,这来自facebook graph sdk。

    我从 here

    此外,一个快速而肮脏的更改似乎为我修复了这个错误 正在向中要删除的参数列表中添加“code” FacebookRedirectLoginHelper

    后来facebook自己发布了更新包,似乎解决了这个问题。

    确保您拥有最新版本的 facebook-graph-sdk 在回答此问题时,版本为 5.6.2