网站和移动应用程序之间的共享Facebook访问令牌

Und*_*ion 8 mobile facebook access-token ios facebook-access-token

我想要一个网站(带有Devise和Omniauth的Rails 3.1)和一个移动应用程序(iOS5)来共享身份验证.我的意思是,我希望用户能够使用Facebook或SSI访问移动应用程序的SSI,并让移动应用程序使用用户的凭据与网站的API进行通信以对网站进行身份验证.

我目前的网络端工作得很好,用户能够SSI到一个帐户.我也有移动应用程序工作,支持用户SSI.两者都使用相同的Facebook应用程序.

我的问题是找到两者之间共享的东西,我可以使用它来移动应用程序对网站进行身份验证.显然两者都可以访问相同的用户ID,但这似乎不太安全.我的移动应用程序具有访问令牌,但这与网站的访问令牌不同,虽然它们看起来相似,但我的移动访问令牌到期而我的Web访问令牌没有.

Web/Rails令牌(不是真实的):

DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA

移动/ iOS令牌(不是真实的)

BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA

使用Facebook的访问令牌调试器,我得到以下内容(删除的所有内容在令牌之间是相同的):

对于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
Run Code Online (Sandbox Code Playgroud)

对于Mobile/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
Run Code Online (Sandbox Code Playgroud)

mie*_*tus 1

你必须在 facebook API 中做一些小的改变,在授权中,从

[self authorizeWithFBAppAuth:YES safariAuth:YES];
Run Code Online (Sandbox Code Playgroud)

[self authorizeWithFBAppAuth:NO safariAuth:NO];
Run Code Online (Sandbox Code Playgroud)

因为有时当您想通过 fbApp 或 Safari 进行身份验证时,令牌会出现问题。我遇到了同样的问题,因此我的网络服务中的令牌有所不同。