Iphone Facebook给出安全警告:请像对待密码一样对待上面的URL,不要与任何人共享

Iphone Facebook给出安全警告:请像对待密码一样对待上面的URL,不要与任何人共享,iphone,ios,facebook,ipad,Iphone,Ios,Facebook,Ipad,我已经将Facebook与我的应用程序集成在一起发布内容。它一直工作到应用程序的1.2版,但现在我在以下面的方式登录后收到一个安全警告 这个安全警告的奇怪之处在于,它适用于我的一个Facebook帐户,与以前一样没有任何警告,但我的另一个帐户收到了这个警告。我已附上该问题的屏幕截图: 在花了很长时间在互联网上搜索这个问题之后。最后我得到了答案 登录Facebook帐户>进入隐私设置>点击页面左侧的安全标签,然后禁用安全浏览 现在重置您的模拟器,然后运行应用程序并再次登录它肯定会工作禁用安全浏览是

我已经将Facebook与我的应用程序集成在一起发布内容。它一直工作到应用程序的1.2版,但现在我在以下面的方式登录后收到一个安全警告

这个安全警告的奇怪之处在于,它适用于我的一个Facebook帐户,与以前一样没有任何警告,但我的另一个帐户收到了这个警告。我已附上该问题的屏幕截图:


在花了很长时间在互联网上搜索这个问题之后。最后我得到了答案

登录Facebook帐户>进入隐私设置>点击页面左侧的安全标签,然后禁用安全浏览


现在重置您的模拟器,然后运行应用程序并再次登录它肯定会工作

禁用安全浏览是不值得的,因为我们无法让所有用户禁用安全浏览


我已经决定了。在这里检查我的答案

简单的回答是,如果您使用自己的重定向uri而不是标准的facebook uri,问题就可以解决。返回访问令牌后,标准的www.facebook.com/connect/login_success.html页面会有一个计时器,它可能会在应用程序检索访问令牌之前更改URL

此问题可能与internet延迟有关。我们有两个客户报告此问题,一个在缅甸,另一个在英国。对任何人都没有问题。假设您是这样授权的:

https://www.facebook.com/v2.10/dialog/oauth?client_id=999999999999999&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token&scope=user_photos,user_events&display=popup
对于默认的redirect_uri(),facebook返回URL参数中的access_令牌,但该页面的html正文包含两个计时器:

    Success <br/>
<b id="warning" style="display: none; color:red">
    SECURITY WARNING: Please treat the URL above as you would your password and do not share it with anyone. 
    See the <a href="http://l.facebook.com/l.php?u=xxxxxxx" target="_blank" data-lynx-mode="hover">Facebook Help Center</a> for more information.
</b>
<script type="text/javascript">
    document.domain = 'facebook.com';
    if (window == top) {
        setTimeout(function () { document.getElementById("warning").style.display = "block"; }, 2000);
    }
    setTimeout(function () { if (window.history.replaceState) { window.history.replaceState({}, "", "\/connect\/blank.html#_=_"); } }, 2000);
</script>
成功
安全警告:请像对待密码一样对待上面的URL,不要与任何人共享。 有关更多信息,请参阅。 document.domain='facebook.com'; 如果(窗口==顶部){ setTimeout(函数(){document.getElementById(“warning”).style.display=“block”;},2000); } setTimeout(函数(){if(window.history.replaceState){window.history.replaceState({},”,“\/connect\/blank.html},2000);
当任一计时器触发时,它将更改删除访问令牌的URL。所以,只要你在它改变之前抓住它,一切都会发生。在我们的例子中,我们在Windows下使用嵌入式浏览器控件并监视导航链接。只要代码能够在超时发生之前接收到包含access_令牌的导航事件,那么一切都正常。我们一直无法确定互联网连接的延迟以及用户缓慢的计算机速度是如何导致这个问题的,但这解决了这个问题


在Facebook应用程序的Facebook登录设置中,将您自己的URI添加到有效的OAuth重定向URI列表中。如果您重定向到自己的html页面,则可以避免facebook超时。

在该链接上查看我的答案。也许这会解决你的问题。