oauth 2在移动SDK中实现

时间:2014-06-27 07:51:21

标签: android ios facebook oauth oauth-2.0

我已经创建了SDK,现在想要将oauth集成到身份验证过程中。现在我想和Facebook SDK一样做,如果客户端应用程序已经安装并登录,它会切换到该应用程序请求权限并切换回想要授权它的应用程序。如果客户端应用程序不存在,则会打开网页并在登录时请求权限,然后在登录后重定向到我的应用程序。

我们在服务器上实现了oauth,但不确定我们将使用哪个grant_type来实现上述功能。我们无法在客户端应用中存储密码。

让我知道是否有人知道如何实现此功能并实现与其他SDK(Facebook,Twitter)相同的流程。

2 个答案:

答案 0 :(得分:2)

对于基于移动设备的应用,请使用以下网址进行身份验证:

POST https://api.example.com/token
grant_type=authorization_code&
code=AUTH_CODE_HERE&
redirect_uri=REDIRECT_URI&
client_id=CLIENT_ID

如果用户登录则从应用程序传递身份验证代码,如果用户未登录,则首先导航到登录页面,成功登录授权页面就像往常一样。 注意:由于我们在查询参数中发送代码,但在请求中通过ssl增强安全性来执行此操作可能不安全。

用于浏览器身份验证

https://example.com/auth?response_type=token& client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=photos

如果用户已经登录,身份验证会选择登录会话。

答案 1 :(得分:0)

我认为当你说"我想像Facebook SDK那样做时,你已经回答了自己的问题"

Facebook SDK提供了用于检测是否安装了Facebook应用程序的框架,以避免通过WebView界面注册。 Google还通过Google+标志而非浏览器提供authentication and authorization API。如你所见:

enter image description here

文档建议使用正确的设备基础结构而不是系统浏览器。

根据此post,可以通过编程方式检查是否安装了应用程序。对于Android,我认为两个SDK都会在您触发注册/进/出过程时检查是否安装了相关的应用程序,并在必要时调用系统浏览器。

因此,为了提供通用的OAuth 2.0,您也可以以编程方式执行相同的操作,但我想,钻取此信息,选择正确的应用程序并启动它不会是一件容易的事。