标签: facebook-oauth

OAuth错误:此IP无法为该应用程序发出请求

我刚刚开始This IP can't make requests for that application.使用我的应用程序随机出错.我的服务器的IP地址在我的应用程序设置的白名单中,并且它运行正常,但我随机开始出现此错误.我检查了服务器的IP(即使我已经知道它是静态的),我已经删除了白名单中的所有条目,但似乎都没有.很奇怪,我可以从我家测试完全相同的代码,它的工作原理!可能是问题的原因是什么?即使几分钟前也没有发生这种情况,但现在我的服务器出错了.

谢谢,可以.

更新:我似乎也无法删除白名单.我去了app高级设置,IP再次出现了.我删除了它们并保存了,它说已经保存了但是当我向下滚动时,IP仍然存在.我认为这是Facebook的一个严重错误.但是[当前不可编辑的]列表无论如何都包含我的服务器的IP.

oauth facebook-graph-api facebook-oauth facebook-opengraph

15
推荐指数
3
解决办法
2万
查看次数

Facebook OAuth登录 - access_token API返回"此授权代码已被使用"

这个问题已经在Stack上被问了几次,但是没有真正的答案.让我试着解释一下我的情况.

我们使用使用Facebook OAuth2登录的应用程序.这个登录过去一直工作到上周,突然间它现在让我们感到麻烦.

申请流程:

第1步:用户在我们的网站上按Facebook登录按钮

第2步:重定向到Facebook登录/授权页面

第3步:在授权应用程序时,回调来到我们的应用程序,带有一个短暂的"代码"参数.

第4步:使用" https://graph.facebook.com/oauth/access_token"URL将此"代码"参数交换为60天的访问令牌.

第4步中的错误:

当我们尝试为访问令牌交换短生活"代码"时,我们从Facebook收到此错误.

{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Run Code Online (Sandbox Code Playgroud)

观察:

  1. 对于刚进入应用程序的用户,不会发生上述错误.
  2. 对于返回的用户,此调用失败并出现上述错误.
  3. 我们的应用程序现已运行超过9个月,此错误仅在过去7-10天内出现.在此之前,我们已有成千上万的用户成功使用它.

我从论坛得到的东西:

以下是我对所读内容的解释.可能不准确.Facebook有一些奇怪的政策,需要应用程序开发人员维护临时的10分钟代码,直到第一次登录期间获得的60天代码到期为止.因此,我们应该在用户的浏览器上创建一个带有Access令牌的cookie.我甚至能够看到人们修改他们的代码以创建cookie.

什么真的困扰我?

  1. 建议的解决方案假定他们创建的cookie始终存在于用户的浏览器中.这是一个不好的假设,因为cookie可能随时被删除.
  2. 我有另一个应用程序ID/app秘密,我用于我的开发(即localhost),这是完美的.登录发生在那里很好,但它只有产品机器有问题.
  3. 自从我们推出应用程序以来,这个问题在生产机器上发生了将近10个月,而且它突然发生了.最糟糕的是,我无法得到任何打破此流程的最新变化记录.

编辑:

平台: Python,Google Appengine.我们不使用任何Facebook SDK,我们对所有登录URL进行直接HTTP调用.调用失败:https://graph.facebook.com/oauth/access_token - 我们在第一次通话发生后的20秒内传递了appId,密码和代码(从facebook获得).

希望这里有足够的信息来证明我们的代码并非完全错误.来自遇到并解决此问题的人的任何提示/指示都是欢迎.如果它是一个Facebook漏洞,Facebook开发者会注意到,我会更高兴.

facebook oauth facebook-authentication facebook-oauth facebook-login

15
推荐指数
1
解决办法
1万
查看次数

通用分析和Facebook注册

我有一个允许通过Facebook注册的网站(theneeds.com).我们正在运行多个广告系列,例如Facebook本身,我们希望正确跟踪不同广告系列的注册情况.

问题在于Universal Analytics:当用户注册Facebook时,她会触发新会话,从而失去广告系列参考.

两种可能的解决方案是

  1. 删除注册表单上的分析跟踪(即导致新会话启动的页面)
  2. 将facebook.com添加到推荐排除列表中

不幸的是两者都有缺点,所以我想知道是否有最佳实践或更好的解决方案.


更多细节如下.

来自"Universal Analytics使用指南"

默认情况下,所有引荐都会在Universal Analytics中触发新会话 https://support.google.com/analytics/answer/2795983

以下是发送到Facebook的广告系列示例:

http://www.theneeds.com/?utm_source=facebook&utm_medium=social&utm_campaign=_mycampaign

这就是发生的事情.

  • 当用户点击时,她会打开theneeds.com,其中包含源,媒体和广告系列.
  • 用户现在点击加入并选择Facebook [1],她被重定向到facebook.com进行授权.
  • 在成功授权[2]之后,她被重定向回theneeds.com,推荐facebook.com(或m.facebook.com,在移动设备上).
  • 这会触发Universal Analytics中的新会话,从而丢失有关广告系列的信息.
  • 用户现在位于注册表单上,并在提交后重定向到标记分析目标的页面.
  • 不幸的是,目标是注册为facebook.com/referral,而不是facebook/social/_mycampaign.

笔记:

[1]我以Facebook为例来简化讨论.显然,Twitter,谷歌和任何其他oAuth提供商也是如此.

[2]为了测试,需要确保用户尚未授权Facebook上的网站,以便她实际上在facebook.com上看到页面(这是新用户的常见情况) - 如果用户已经授权后,她立即被重定向回网站,并且推介没有变化,因此可以正确跟踪广告系列.

我测试了上面提到的2种解决方案.

  1. 删除注册表单上的分析跟踪 - 其缺点是我正在丢失页面跟踪
  2. 将facebook.com添加到推荐排除列表 - 这会导致失去来自Facebook的实际推荐流量(例如,由于用户共享).

装饰链接也是一种不可行的解决方案,因为用户在决定注册之前可能会查看网站,因此我应该在所有链接上传播装饰.

一个更好的解决方案是暂时禁用注册表单上的引用,但我不确定这是否可以在Universal Analytics中使用.

有什么建议吗?先感谢您!

google-analytics oauth facebook-oauth

15
推荐指数
1
解决办法
3799
查看次数

FB.getLoginStatus不会触发回调函数

我有一个难题.困难意味着我搜索了网络和StackOverflow以及整个FBJS SDK文档并且没有找到答案.

我正在构建一个Page Tab应用程序,我想让粉丝们参加rsvp活动.所以我必须检查用户是否已登录,如果不是,我必须登录.这听起来很简单,但FB.getLoginStatus不会触发回调函数.这是代码摘录:

FB.init({
   appId: window.appID,
   status: true,
   xfbml: true,
   cookie: true,
   oauth: true,
   channelUrl: 'http://example.com/fb/channel.html'
 }); 
Run Code Online (Sandbox Code Playgroud)

然后我只是 - 当然在用户点击一个按钮后 - 调用FB.getLoginStatus,但它似乎没有做任何事情.

我已经检查了沙盒模式,FB.init成功,应用程序设置中的URL和开发环境.我可以调用FB.ui,尽管FB.ui的方法是:'oauth'我收到一条错误消息,说""redirect_uri"参数不能与"next"参数一起使用,这个参数已被弃用." 这很奇怪,因为我没有使用"next"参数.但是当我在undefined旁边设置时,它工作正常,我得到了窗口,但它说"应用程序配置不允许给定URL.".期待,我可以登录,然后我有access_token.但是在新窗口中,getLoginStatus仍然没有做任何事情.

所以欢迎任何建议.

谢谢,塔马斯

更新:

function onBodyLoad() { //on body onload
    FB.init({
     appId: window.appID,
     status: true,
     xfbml: true,
     cookie: true,
     oauth: true,
     channelUrl: 'http://example.com/fb/channel.html'
    });     
   }
...
function getName() { // on button onclick
 FB.getLoginStatus(function(response){
  if (response.authResponse)
   {
    window.loggedIn = true;
    debugString('Logged in');
   } else
   {
    window.loggedIn=false; 
    debugString('Not logged in');
   }
}, true);
if (window.loggedIn === …
Run Code Online (Sandbox Code Playgroud)

facebook oauth facebook-graph-api facebook-oauth

12
推荐指数
1
解决办法
2万
查看次数

reauthenticate功能改变了它的行为?

在我的应用程序中,为了能够切换到另一个用户,我使用"https://www.facebook.com/dialog/oauth"URL 的"auth_type = reauthenticate"参数.这工作了很长时间.我能够使用其他FB用户登录,而不是上次登录.(例如共享PC)今天我发现不再可能改变用户.只需重新输入密码.此外,没有"取消"按钮(使用"dispalay = popup").

我在developers.facebook.com上找不到任何关于它的东西

有人知道吗?是临时错误还是其他什么?

authentication facebook facebook-oauth

12
推荐指数
1
解决办法
1960
查看次数

window.open没有弹出窗口阻止程序使用AJAX并操纵window.location

当从服务器(例如Twitter和Facebook)处理OAuth时,您很可能会将用户重定向到要求获得应用程序权限的URL.通常,在单击链接后,您通过AJAX将请求发送到服务器,然后返回授权URL.

但是当你window.open在收到答案时尝试使用时,你的浏览器会阻止弹出窗口,使其无效.当然,您可以将用户重定向到新的URL,但这会破坏用户体验,而且令人讨厌.您不能使用IFRAMES,但不允许使用IFRAMES(因为您无法看到位置栏).

那怎么办呢?

ajax popup window.open twitter-oauth facebook-oauth

11
推荐指数
2
解决办法
2万
查看次数

最佳实践登录Facebook,Twitter,Google或注册

我已经设法在我的PHP web应用程序中使用Facebook系统编程登录.但现在我有点陷入最佳实践.

我是否必须将用户的userID保存到我的数据库,用户的电子邮件地址和/或姓名?我问这个是因为我正在考虑用户改变他们的电子邮件地址,如果是这样的话,他们下次无法登录.

我怎么知道当用户使用Facebook登录时,以及下次使用Twitter时,它是同一个用户?可能基于他的电子邮件地址?但我想如果你没有改变它,你的标准Facebook电子邮件是your.name@facebook.com,对吧?

我不是在这里要求代码,请提供一些经验或最佳实践.

提前致谢!

Stijn Hoste

php oauth-2.0 twitter-oauth facebook-oauth facebook-login

11
推荐指数
1
解决办法
6517
查看次数

Facebook身份验证 - 不安全的JavaScript尝试使用URL访问框架

我正在尝试将Facebook登录系统实施到我的网站中.

当它尝试连接到Facebook时,我从控制台日志中收到错误:

Unsafe JavaScript attempt to access frame with URL https://s-static.ak.fbcdn.net/connect/xd_proxy.php?xxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

我正在使用JavaScript SDK

我在body标签中添加了这个:

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : 'xxxxxxxxxxxxxx',
            status     : true, 
            cookie     : true,
            xfbml      : true
        });
    };
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
    </script>
Run Code Online (Sandbox Code Playgroud)

Facebook登录按钮:

<div class="fb-login-button"  data-perms="email">Login with Facebook</div>
Run Code Online (Sandbox Code Playgroud)

我从本地主机测试-我有我的注册在Facebook网站开发的应用程序(网站网址:http://localhost)

如何解决这个问题?或者我应该使用PHP SDK?

编辑:当我上传到具有公共域的服务器时出现同样的问题.

javascript php facebook facebook-oauth

10
推荐指数
1
解决办法
2万
查看次数

FB交换令牌api缺少redirect_uri

我正在使用这样的FB交换令牌api:

https://graph.facebook.com/oauth/access_token?client_id={client_id}8&amp;client_secret={client_secret}}&amp;grant_type=fb_exchange_token&amp;fb_exchange_token={one_hour_token}&amp;redirect_uri=http%3A%2F%2Fotagz.cloudfoundry.com%2FfacebookCallback
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"message":"缺少redirect_uri参数.",键入":"OAuthException","code":191

我有我的申请网址:otagz.cloudfoundry.com

我知道有关于这个问题的另一个问题,但没有解决方案,而且是从2010年开始.

有人知道redirect_uri有什么问题吗?

谢谢,克里斯蒂安

redirect facebook facebook-oauth

10
推荐指数
3
解决办法
2万
查看次数

隐式流的安全风险是什么?

隐含流动被认为是不安全的.我知道两个问题:

  1. 困惑的副手.但要克服它,您只需要检查是否为您的应用程序提供了access_token.没有大碍.
  2. XSS攻击.因此,如果我们的access_token通过XSS攻击被盗,它可以用于发出请求(这是我们最初请求的范围的一部分).它很糟糕,但很难窃取access_token,因为我们很可能只在我们的登录页面上拥有它并且没有存储在app状态,因为它的生命很短(我猜这就是Implicit工作流不支持刷新令牌的原因).

它看起来并不太糟糕.是否还有其他我不知道的安全漏洞?

oauth-2.0 facebook-oauth google-oauth oauth2

10
推荐指数
1
解决办法
3689
查看次数