gpt4 book ai didi

ruby-on-rails - ruby rails : Authlogic Facebook integration: Link accounts with user input instead of automatically using email address

转载 作者:行者123 更新时间:2023-12-02 00:36:11 27 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 开发网络应用程序。我正在使用 authlogic 进行身份验证。我的网站有自己的登录名,但我希望也能使用 Facebook。我尝试了 authlogic_facebook_connect(使用 Facebooker)。经过很多小问题(文档还没有完全跟上),我确实让 authlogic_facebook_connect 开始工作,没关系。当我面对以前从未使用过网站的用户时,默认的“连接”行为非常有效,但是对于使用不同电子邮件地址访问 Facebook 和我的网站的用户来说,这会导致大量重复登录。这是我想要的:

当用户点击 Facebook“连接”按钮时(在他们通过点击“允许”的 Facebook 身份验证步骤之后),我希望弹出一个框询问用户是否要连接到预先存在的我网站上的帐户,或者他们是否希望自动为他们生成一个帐户。

如果他们希望它自动为他们生成,我们很好,我们会照常进行,但如果 - 另一方面 - 他们想将他们的 Facebook 帐户链接到我网站上的帐户,我真的想要他们输入他们的本地凭据并找到正确的帐户。换句话说,我希望我的解决方案自动找出哪个帐户看起来是正确的,我希望用户这样做。

是否有任何 gem/插件/quick hack 可以让我使用 authlogic_facebook_connect 或 OAuth 或其他东西来完成这个?

--大卫

最佳答案

其他人可能会为此指出完美的 gem,但我可以告诉你,我已经解决了类似的问题,并且基于 oauth2 gem 推出我们自己的问题并没有太多工作。

这是我使用的代码/流程的草图。

1) 用户点击“连接到 Facebook”,这会将您带到这样的操作

def to_facebook
options = {
:redirect_uri => facebook_callback_url,
:scope => "email,publish_stream" # whatever you want to do
}
client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_API_SECRET, :site => FACEBOOK_API_SITE)

redirect_to client.web_server.authorize_url(options)
end

2) 用户转到 facebook 并为您提供您想要的所有访问权限,然后 facebook 调用您指定的回调 facebook_callback_url 这应该让您执行如下操作:

def facebook_callback
client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_API_SECRET, :site => FACEBOOK_API_SITE)
access_token = client.web_server.get_access_token(params[:code], :redirect_uri => facebook_callback_url)

do_my_custom_user_association(access_token)
end

然后你可以在 do_my_custom_user_association 中指定任何你想要的,如果有人登录,你应该有一个 current_user 可以从 authlogic 获得,这样你就可以重定向到一个流程,让登录用户选择是否要合并到当前帐户或其他帐户。如果没有当前用户,您可以将他们发送到创建帐户流程,并附上一些 Facebook 数据。

请注意,这只是一个草图,需要处理一些错误情况(例如,如果 get_acccess_token 失败,facebook_callback 将被参数 error_reason 命中)并且我不建议您直接在 Controller 中进行所有 oauth2 交互,但基本思想就在那里。

参见 http://developers.facebook.com/docs/authentication/如果任何 oauth2 交互没有意义。

关于ruby-on-rails - ruby rails : Authlogic Facebook integration: Link accounts with user input instead of automatically using email address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com