在PhoneGap应用上执行授权(通过脸书)REST请求到我的node.js服务器

由于这个问题是关于三种技术,我想快速介绍它们中的每一个:

  • node.js:在服务器端的JavaScript(认为它是我的networking服务器)
  • PhoneGap:允许我用HTML / Javascript / CSS编写Android应用程序的框架。
  • Facebook身份validation:使用everyauth让我的用户使用他们的Facebook帐户login

目标 :我需要我的PhoneGap应用程序使用基于REST的协议与我的服务器进行通信。 这些请求中的很多只能在用户使用他们的Facebook账户login到我的服务器时进行。 因此,用户需要login,然后进入PhoneGap应用程序的login状态。

问题 :当我设置facebook的everyauth我基本上有一个URL,像domain.com/auth/facebook将redirect到Facebook的login“popup”。 当用户接受login时,服务器将知道,到目前为止一切都很好。 问题是这样的

  1. 用户现在必须redirect到某个外部URL,而他应该简单地回到PhoneGap应用程序(处于login状态)
  2. PhoneGap应用程序不会检索身份validation令牌,也不会检索身份validation是否成功,因为login过程是在外部URL domain.com/auth/facebook中完成的,而PhoneGap应用程序的HTML则存储在电话本身上并从其中运行

问题的原因:出现此问题的原因不在于正常的Web应用程序,而是PhoneGap应用程序的HTML文件存储在电话本身中,并通过domain.com/auth/facebook进行身份validation成为一个不同的领域。

build议的方法#1 :PhoneGap用户build议我使用PhoneGap的Android-Facebook插件 。 这里的问题是服务器不作为authentication中间人。 因此,用户将不得不通知服务器他们的authentication令牌,而不是服务器通知用户成功的authentication过程和相应的令牌的正常方法。 这似乎是一个严重的漏洞。

我应该如何解决这个问题?

通过ChildBrowser插件 ,PhoneGap应用程序可以监视来自authentication站点的位置更改。

我们使用这种方法将PhoneGap应用程序与node.js openid模块集成在一起

我已经使用jsOauth和ChildBrowser(tut./src 在这里 )为PhoneGap / Android应用程序实现了Twitter的一个解决scheme。 我知道这不包括与一个nodejs服务器的自定义注册; 它只允许访问Twitter REST。 AFAIK这是目前唯一的方法,也就是让子浏览器检查每个新的位置,看看它是你的应用程序的返回URL,然后介入(closures浏览器窗口),并去你自己的应用程序。

使用jsOauth库,身份validation令牌密钥/秘密将为您存储并随每个请求一起发送。

回复:安全性 – 这里没有专业知识,但是讨论结论是,个人电话上的这种数据不会比电话上的其他任何东西都更危险。

啧。 在我的列表中使用PhoneGap / Android Facebook插件。 感谢您与everyauth的链接!