4

我正在开发一个与power.com原则上没有什么不同的网络项目,我试图在一个网站下统一几个不同的社交网站,允许用户在系统中注册一次,然后添加系统可以处理尽可能多的个人社交网络帐户(Facebook、MySpace、Orkut 等),允许他们在一个地方浏览各自的个人资料信息。

简而言之,我似乎无法找到一种方法来验证任意用户进入他们的社交网络帐户。

我一直在研究 OpenSocial 规范以及OpenSocial PHP 客户端项目,但我似乎遗漏了一些东西,因为一切似乎都是循环依赖的。

我的第一个问题是,出于测试目的,我有一个 MySpace 消费者密钥和消费者秘密,但是每当我尝试使用 MySpace 执行三足身份验证时,都没有以其他人身份登录的选项。另外,它执行外部重定向,这有点不受欢迎(作为这个最终社交网络“门户”的用户,我宁愿每次添加新帐户时都不必经历那个重定向过程)。

我将如何以编程方式对任意用户进行身份验证并允许他们访问其帐户信息(最好没有外部重定向)?

其次,2-legged 身份验证需要一个userId(通常是任意整数)来标识要为其检索信息的任意用户。但是,当我输入 MySpace OpenSocial ID 以及给定的消费者密钥和消费者密码时,我会收到 401 Access Denied 错误。此外,为了将来使用此 ID,我似乎需要先对用户进行身份验证……但该身份验证似乎需要 ID。

我非常确信我错过了一些微不足道的东西,但对于我的生活来说,我无法弄清楚它是什么。非常感谢您的帮助!

4

2 回答 2

5

从技术上讲,这不是我的答案,但 OpenSocial 的开发人员向我提供了有关我的问题的以下信息(强调我的问题):

3-legged OAuth 是围绕重定向回您正在验证的站点而构建的,并且没有办法避免它。这不是最方便的体验,但允许用户与您的网站共享他们的数据,同时保持他们的密码私密。 任何要求用户在您网站上的表单中输入 MySpace 密码的设计都被视为反模式,应避免使用。 您可能会尝试在弹出窗口中进行重定向,以使用户的体验不那么刺耳(目前 PHP 客户端并没有让这变得那么容易,但如果您在 opensocial-client-libraries@googlegroups 跟进。 com 有人可以帮助您完成该过程)。

关于无法更改用户,我相信 MySpace 在您的情况下所做的是检查 MySpace cookie 并预填充您的帐户信息。 如果您是访问该站点的用户并且没有登录 MySpace,您应该获得完整的用户名/登录框组合。还应该有一个按钮或链接在某处说“我不是这个用户”并使用其他凭据登录。

至于 2-legged,您需要在您希望访问其数据的任何用户的配置文件中安装与消费者密钥/秘密关联的应用程序。2-legged 主要适用于当前在容器上运行社交小工具并希望通过小工具渲染为其应用程序用户带外访问社交数据的开发人员。 在这种情况下,应用程序服务器已经拥有用户的 OpenSocial ID(来自签名的 makeRequest),并且用户已经在他们的 MySpace 配置文件中安装了应用程序)。

如果您想了解更多信息, http://wiki.opensocial.org/index.php ?title= OAuth_Use_Cases 中涵盖了大部分内容。

从本质上讲,这使得在外部应用程序上使用 2-legged 身份验证变得不可能;2-legged 被明确设计为不用于这种情况。此外,power.com 似乎确实采用了让用户提供他们实际的 Orkut/MySpace/etc 凭据的反模式,所以这就解释了这一点。

清除我的 cookie 有助于通过 MySpace 对我进行身份验证。但是,我跟进了另一个关于 Orkut 身份验证如何工作的问题,因为它似乎不支持 3-legged 身份验证。这是我收到的回复:

Orkut 有兴趣支持这一点,因此您将能够允许用户在未来“正确”地与您的应用程序共享他们的信息。

相应的两足应用程序需要将当前查看者的 OpenSocial ID 转发回您的服务器,可能还需要您自己生成一个授权令牌,以便您可以将 orkut 上的用户会话与您自己服务器上的会话链接起来。 老实说,它可能不足以支持独立的登录系统。

从本质上讲,不,如果不诉诸反模式,Orkut 真的无法连接到外部应用程序(至少目前还没有)。

如果有人对此主题有任何进一步的信息,请随时分享!

于 2009-10-26T19:13:14.483 回答
0

这里也提到了该模式http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi

基本上很多混搭都需要这个特性:

没有小工具的第 3 方网站希望获得最终用户在社交网络上访问其数据的权限,例如下载他们的朋友列表,或获得发布到他们的活动流的权限

于 2009-10-28T23:04:51.503 回答