我的 Rails 应用程序的用户可以通过以下两种方式之一进行身份验证:
- 使用他们的 Facebook 帐户
- 使用我们自己的身份验证
我在 Android 和 Rails 上使用 Facebook devise
SDK omniauth
。
如何在 Android 上对我的 Rails 应用程序进行身份验证,以便从服务器获取我需要的信息?
注意:我注意到这个问题最近获得了相当多的意见。请不要太严格地遵循这个线程中给出的建议——网络移动得很快,它的历史可以追溯到 3 年前!
我的 Rails 应用程序的用户可以通过以下两种方式之一进行身份验证:
我在 Android 和 Rails 上使用 Facebook devise
SDK omniauth
。
如何在 Android 上对我的 Rails 应用程序进行身份验证,以便从服务器获取我需要的信息?
注意:我注意到这个问题最近获得了相当多的意见。请不要太严格地遵循这个线程中给出的建议——网络移动得很快,它的历史可以追溯到 3 年前!
这可以使用 fb_graph gem(不是 fbgraph!)来完成。
您可以将其添加到您的 gemfile 并执行
user = FbGraph::User.me(token).fetch
token
您通过使用例如 Android 上的 Facebook SDK 获得的 oauth 令牌
在哪里。user.email
将是用户的电子邮件地址(如果您设置了必要的权限)。
您可以使用此 URL 进行测试:
https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token
Niraj Shah 是完全正确的,尽管答案对您来说可能不够详细。要深入回答您的问题,请查看最近才发布的 Ryan Bates 的 Securing an API railscast 。它涵盖了 HTTP 基本身份验证。
您可能还想查看更高级的选项来保护您的 API/为注册用户提供对其数据的访问权限。这里也有一个关于这个的 railscast:http ://railscasts.com/episodes/353-oauth-with-doorkeeper - 虽然这是一个专业剧集,所以你需要注册才能观看它。
弗朗西斯科,我也有同样的需要。
使用 token_authenticable 的设计场景看起来很简单,应该不是问题,但我不确定处理 Facebook 场景的最佳方法。在网络端,对于 FB 身份验证,我使用了omniauth-facebook,如此处所述:https ://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 。我认为这使用 OAuth 和 FB 作为提供者,所以最新的 RailsCast 关于门卫使用 OAuth 保护 API 的可能性很大。我还没有尝试过,但除非你打败我,否则很快就会尝试。这是链接:http ://railscasts.com/episodes/353-oauth-with-doorkeeper 。
这完全取决于您的身份验证系统如何工作。您需要在您的服务器上创建一个 API 来处理来自 Android 应用程序的通信并使用该 API 在两者之间传递信息。