【问题标题】:Foursquare authorization without losing context on a websiteFoursquare 授权而不会丢失网站上的上下文
【发布时间】:2012-08-12 04:38:53
【问题描述】:

我正在为用户添加将其foursquare 帐户与他们在我的网站上的帐户相关联的功能。 Foursquare 的 oauth 帐户授权将用户带到foursquare 的网站,在授权我的网站后,它将用户重定向回一个url。

当他们决定将foursquare功能添加到他们的帐户时,我想避免破坏用户在我的网站上的上下文,所以我计划使用在新窗口中进行foursquare的帐户授权

var foursquare_popup = window.open("foursquare_url_to_authenticate_user");

并在授权完成后将弹出窗口重定向到静态成功页面。

我已经在 Wired's 推文按钮等几个地方看到了 oauth 弹出窗口。

这是处理 twitter/facebook/foursquare 之类的 oauth 的好方法吗?

【问题讨论】:

    标签: api oauth foursquare


    【解决方案1】:

    如果您想使用弹出窗口,可以指定 display=webpopup(请参阅https://developer.foursquare.com/overview/auth#display)。

    此外,您可以在回调 URL 中指定其他参数,这些参数将由 oauth 流程保留。因此,如果您将“&state=settings/accounts”或其他内容作为 redirect_uri 的参数传递,您可以在成功时解析它并适当地恢复与用户的会话。

    【讨论】:

      【解决方案2】:

      我建议不要在 oauth 登录过程中打开弹出窗口,纯粹是因为某些浏览器不支持弹出窗口 - 特别是手机上的浏览器。此外,浏览器可能支持弹出窗口,但用户可能打开了弹出窗口阻止程序。

      更好的方法是在同一个窗口中将用户从您的网站重定向到服务提供商。

      我目前正在研究一种在我的网站页面上使用不可见 iframe 的方法。这样,如果用户已经登录到服务提供商,那么他们就不需要被引导离开我的网站。但是,我已完成此功能的一半,因此我无法确认它是否可以工作。

      【讨论】:

      • 我完全同意。不破坏上下文的最好方法是在当前窗口中完成授权,然后返回您的应用程序。就用户体验而言,新窗口永远不是,我的意思是永远不会。
      • 根据 akdotcom 在另一个问题中的回答 iframe 似乎不是一个可能的解决方案:stackoverflow.com/questions/9073883/…
      • @ThomasW-B 我应该指定我使用 iframe 进行 ajax(而不是 xmlhttprequest),因为所有浏览器都支持它。所以 iframe 对用户是隐藏的。所有优秀的浏览器都使用 iframe 进行 xss 预防,因此我不会在调用 iframe 时进行服务器端重定向(由于主机的差异,这将导致 iframe 无法访问),我只是将重定向位置从我的服务器传递回iframe 为 json,然后我页面上的 javascript 决定是去这个位置还是做其他事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多