我可以在iPhone应用程序上使用Facebook身份validation服务器端stream程,并仍然有客户端的交互?

我有一个使用Facebook身份validationlogin用户的网站。 它使用oAuth 2.0服务器端stream程进行身份validation,并且一切正常。

我正在为同一个网站开发iPhone应用程序,并希望允许用户通过使用FBauthentication的iPhone应用程序login到网站。Facebook iOS SDK提供了使用客户端stream程进行authentication的机制,在我的iPhone中应用程序获取访问令牌。

现在用我的服务器validation用户身份,并使访问令牌可用于我的服务器,我想把这个访问令牌发送到我的服务器(通过https)和validation用户对我的数据库,并设置我自己的会话相关的cookie。 这是首选还是build议的方法? 我需要我的服务器上的访问令牌,因为我要求离线访问权限,并让我的Web应用程序直接与我的服务器上的FB用户帐户交互。

对我来说更简单的select就是在我的iPhone应用程序上仅使用服务器端stream进行身份validation,因为没有新的需要完成,服务器端代码对于网站或iPhone应用程序是相同的。 那可能吗?

我不能使用客户端身份validation,并将访问令牌传递到我的服务器进行身份validation,并存储以供进一步使用。 接收到的用于客户端authentication的访问令牌与服务器端authentication令牌完全不同,二者不能互换使用。 我将不得不使用服务器端身份validation。

一个解决scheme( 在这里提供 – 在第一个问题的评论)是使用一个UIWebView和模拟服务器端的stream程。 下面的评论提到了这个方法的问题,我一直没能解决。

这已经通过检查login后webview被redirect到的URL来解决。

另一个问题是,我的iPhone应用程序也做一些客户端交互(如FBShare,写给朋友的墙壁等)。 如果我使用模拟的服务器端身份validation,我将不得不为这些交互做另一个客户端身份validation,或采取痛苦的方法,甚至通过我的服务器路由这些行动。 后者绝对不是可取的。 我如何去做这件事? 我可以避免这种双重login,因为这将是非常糟糕的用户体验?

我处于类似的情况。 我有一个iOS本地应用程序,需要知道用户是谁。

我有一个使用Devise的网站(RoR),可以通过它的OmniAuth gemlogin/创buildFacebook / Twitter账户。

然而,在Facebook和Twitter上,似乎我必须分别创build两个条目,一个用于网站,另一个用于应用程序。

这些是每个单独的API密钥。

对于iOS应用程序,我想出来做这个工作的唯一方法是:*如果用户想通过Facebook的Twitter的授权/创build帐户,然后通过UIWebView发送到网站login。

任何来自iOS的tweet / FBpost实际上都会通过网站上的一个API发布给每个人,这些API将使用用户的访问令牌代表他们发布推文。

事情是,我不喜欢Webviews的login。 如果有人有任何build议,我都耳熟能详。

“我不能使用客户端身份validation,并将访问令牌传递给我的服务器,以便对我的系统进行身份validation,并将其存储以供进一步使用。客户端身份validation接收的访问令牌与服务器端身份validation令牌完全不同,两者不能可互换使用,我将不得不使用服务器端authentication。“

我刚刚发现它相反。 客户端stream量和服务器端stream量authentication产生的访问令牌完全相同。 它们是“可互换的”,实际上一旦你获得了令牌,只要用户仍然login并且令牌没有过期,它就可以在任何地方使用。 这工作。

curl "https://graph.facebook.com/{the user id}/friends?access_token={the token} 

我不能使用客户端身份validation,并将访问令牌传递到我的服务器进行身份validation,并存储以供进一步使用。

根据Facebook的安全要求 – 使用appsecret_proof页面validationgraphicsAPI调用页面:

访问令牌是可移植的。 可以通过Facebook的SDK获取客户端生成的访问令牌,将其发送给服务器,然后代表该服务器进行调用。

所有这一切,我感到困惑的是,SDK不允许使用三方OAuthstream,返回一个访问代码而不是一个令牌,尽pipe他们build议这样做是出于安全原因。