我正在研究一个与power.com不太相似的网络项目,我试图在一个网站下统一几个不同的社交网站,允许用户注册一次系统,然后添加尽可能多的个人社交网络帐户(Facebook,MySpace,Orkut等),因为系统可以处理,允许他们在一个地方浏览他们各自的个人资料信息。
简单地说,我似乎无法找到将任意用户身份验证到其社交网络帐户的方法。
我一直在研究OpenSocial规范以及OpenSocial PHP client项目,但我似乎遗漏了一些东西,因为一切看起来都是循环依赖的。
我的第一个问题是,出于测试目的,我有一个MySpace消费者密钥和消费者秘密,但每当我尝试使用MySpace执行三方认证时,没有选择以其他人身份登录< / i>的。此外,它执行外部重定向,这有点不受欢迎(作为这个最终社交网络“门户”的用户,我不必每次添加新帐户时都要经历重定向过程。)
如何以编程方式验证任意用户并允许他们访问其帐户信息(最好不使用外部重定向)?
其次,两条腿的身份验证需要userId
(通常是一个任意整数),用于标识要检索其信息的任意用户。但是,当我输入MySpace OpenSocial ID以及给定的消费者密钥和消费者密钥时,我会收到401 Access Denied错误。此外,为了将来使用此ID,似乎我需要先对用户进行身份验证...但该身份验证似乎需要ID。
我很确信我错过了一些微不足道的东西,但是因为我的生活无法弄清楚它是什么。非常感谢帮助!
答案 0 :(得分:5)
从技术上讲,这不是我的答案,但OpenSocial的开发人员向我提供了有关我的问题的以下信息(强调我的):
三脚OAuth围绕着 重定向回你所在的网站 认证,没有 避免它的方法。这不是最多的 方便的经验,但允许 用户与您分享他们的数据 网站同时保留他们的密码 私人的。 任何需要的设计 用户输入他们的MySpace密码 在你的网站上的表格是 被认为是一种反模式,应该 要避免。你可能会 尝试在弹出窗口中重定向 为了使体验有点 对用户来说不那么刺耳(目前 PHP客户端没有这样做 很容易,但如果你跟进了 opensocial-client-libraries@googlegroups.com 有人可以帮助你完成工作 那个过程)。
关于无法做到 改变用户,我相信 MySpace正在做你的情况 检查MySpace cookie和 预先填充您的帐户 信息。如果您是用户 访问该网站,但没有登录 MySpace,你应该得到一个完整的 用户名/登录框组合。那里 也应该是一个按钮或链接 某处可以说“我不是这个用户” 并使用其他凭据登录。
对于双腿,你需要 有与之相关的应用程序 安装的消费者密钥/秘密 您的数据的任何用户的个人资料 希望访问。两条腿大部分都是 适用于开发人员 目前正在运行一个社交小工具 容器和希望访问社交 他们的应用程序用户的数据 带小工具渲染的乐队。在此 例如,应用程序服务器会 已经拥有用户的OpenSocial ID (来自签名的makeRequest)和 用户已经拥有该应用程序 安装在他们的MySpace个人资料上。)
大部分内容都包括在内 在http://wiki.opensocial.org/index.php?title=OAuth_Use_Casesif 你想了解更多信息。
基本上,这使得在外部应用程序上使用双腿认证成为不可能;明确地设计了两条腿,不适用于这种情况。此外,似乎power.com确实采用了让用户提供其实际的Orkut / MySpace / etc凭证的反模式,因此可以解释这一点。
清除我的Cookie,通过MySpace验证我的身份。但是,我接着提出了另一个关于Orkut身份验证如何工作的问题,因为它似乎不支持3-legged身份验证。以下是我收到的回复:
Orkut有兴趣支持 这个,所以你将能够允许用户 与您分享他们的信息 将来“正确”应用。
相应的双腿应用程序会 需要转发当前的观众 OpenSocial ID返回到您的服务器, 可能还有授权 你自己生成的令牌,以便 您可以在orkut上链接用户的会话 在您自己的服务器上进行会话。 老实说,它可能无法使用 足以支持独立登录 系统强>
基本上,不,Orkut真的不能挂钩到外部应用程序(至少,还没有),而不诉诸反模式。
如果有人对此主题有任何进一步的信息,请随时分享!
答案 1 :(得分:0)
这里也提到了模式http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi
基本上很多mashup都需要这个功能:
第三方网站没有 小工具想要获得最终用户 允许访问他们的数据 社交网络,例如 下载他们的朋友列表,或获取 允许发布到他们的活动 流