iOS&node.js:如何validation传入的访问令牌?

我有一个iOS使用OAuth和OAuth2提供商(Facebook,谷歌,微博等)来validation用户,并提供访问令牌。 除了名称和电子邮件地址等最小数据之外,应用程序不会将这些服务用于除authentication以外的任何其他服务。

然后,应用程序将访问令牌发送到服务器以指示用户已通过身份validation。

服务器是用Node.js编写的,在做任何事情之前,需要根据正确的OAuth *服务validation提供的访问令牌。

我一直在环顾四周,但到目前为止,我发现的所有node.jsauthentication模块似乎都是通过服务器提供的网页login和authentication的。

有谁知道任何node.js模块,可以做一个提供的访问令牌的简单validation?

据我所知(就我所知,通过阅读规格说明),OAuth和OAuth 2规范并没有指定访问令牌validation的单个端点。 这意味着您将需要每个提供程序的自定义代码来validation访问令牌。

我查找了你指定的端点要做什么:

Facebook的

似乎其他人已经使用Facebook的图表API的'我'端点来检查令牌是否有效。 基本上,要求:

https://graph.facebook.com/me?access_token={accessToken} 

谷歌

谷歌有一个专门的terminal获取访问令牌信息,也有很好的文档 。 基本上,要求:

 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken} 

推特

Twitter似乎没有一个真正明显的方式来做到这一点。 我会怀疑,因为帐户设置数据是非常静态的,这可能是最好的validation方式(取回推文大概会有更高的延迟?),所以你可以请求(与适当的OAuth签名等):

 https://api.twitter.com/1.1/account/settings.json 

请注意,此API的速率限制为每个窗口15次。

总而言之,这似乎比第一次出现更复杂。 在服务器上实现某种会话/身份validation支持可能是一个更好的主意。 基本上,您可以validation一次您获得的外部OAuth令牌,然后为您的用户分配自己的会话令牌(使用您的服务器上的用户ID(电子邮件,FB ID,无论)进行身份validation),而不是继续向OAuth提供商请求您获得的每个请求。

希望有所帮助!

要获得有关Google使用的令牌的信息,请仔细阅读版本api https://www.googleapis.com/oauth2/v3/tokeninfo?access_token={accessToken}