【发布时间】:2012-03-19 19:37:49
【问题描述】:
我想要一个网站(带有 Devise 和 Omniauth 的 Rails 3.1)和一个移动应用程序 (iOS5) 来共享身份验证。我的意思是我希望用户能够使用 Facebook 访问网站,或使用 SSI 访问移动应用程序,并让移动应用程序使用用户的凭据与网站的 API 对话,以对网站进行身份验证。
我目前的 Web 端可以很好地与能够 SSI 到帐户的用户一起工作。我也有移动应用程序工作,支持用户 SSI。两者都使用相同的 Facebook 应用程序。
我的问题是找到可以用于移动应用程序对站点进行身份验证的两者之间共享的东西。显然两者都可以访问相同的用户 ID,但这似乎不是很安全。我的移动应用程序有一个访问令牌,但这与网站的访问令牌不同,尽管它们看起来很相似,而且我的移动访问令牌过期而我的网络访问令牌没有过期。
Web/Rails 令牌(非真实):
DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA
移动/iOS 令牌(非真实)
BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA
使用 Facebook 的 access token debugger 我得到以下信息(令牌之间删除的所有内容都是相同的):
对于 Web/Rails 令牌:
App ID:
XXXXXXXXXXXXXXXX : SomeAppName
User ID:
XXXXXXXX : My Name
Issued:
1327507734 : 8:08 am Jan 25 2012
Expires:
Never
Valid: True
Origin: Web
Scopes: email offline_access
对于移动/iOS:
App ID:
XXXXXXXXXXXXXXXX : SomeAppName
Metadata: {"sso":"iphone-safari"}
User ID:
XXXXXXXX : My Name
Issued:
1327507734 : 8:08 am Jan 25 2012
Expires:
Never
Valid: True
Origin: Native Mobile
Scopes: email offline_access
【问题讨论】:
-
你好。你找到解决这个问题的方法了吗?我现在面临同样的问题...
-
嗨。不,不幸的是没有。奇怪的是,这似乎是一个相当普遍的要求。花了很长时间寻找,但没有发现任何有用的东西。转移到别的东西上,但很快就必须解决这个问题。
-
我的应用程序没有非常严格的安全要求,但是,我们所做的只是检查 Facebook 以找到与每个访问令牌关联的用户 ID 以匹配帐户
-
@alex 运气好吗?你是怎么解决的?
-
我以阻塞的方式完成这一切。我实际上并没有使用任何内置库,只是自己处理请求。在这种情况下,只需简单调用 graph.facebook.com/me 并解析一些 JSON。
标签: ios facebook mobile access-token facebook-access-token