我怎么知道用户的哪些朋友也在使用我的应用程序?

时间:2013-04-30 21:09:09

标签: android google-plus

我正在构建一个webapp + android应用程序,并认为如果我能向“Alice”显示她的哪些朋友也使用该服务将会很有用。

用户身份验证是通过google oath2完成的,因此我可以访问所有用户的电子邮件。

我想知道如何构建这样的查询?因为我基本上拥有的是

  • 用户可能有很多人名单Alice:(bob@gmail.com,user ..)
  • 我的数据库中的用户(alice@gmail.com,bob @ gmail.com,..)
  • “友谊”是否是互惠的鲍勃:(alice @ gmail.com,chet ..)|| (Chet@gmail.com,戴安娜......)

我宁愿没有“我们是朋友是/否”系统,并且通过用户循环整个联系人列表似乎非常浪费。后端运行在php + mysql上。

我如何查询我感兴趣的人名单?

2 个答案:

答案 0 :(得分:3)

PhotoHunt目前就是这样做的。它通过执行以下步骤来完成此操作:

  1. 在用户登录时存储用户的Google+ ID(或电子邮件,在您的情况下)。为简单起见,让我们调用第一个登录的用户Alice。
  2. 当新用户Bob登录时,会执行people.list API调用,以列出Bob向您的应用显示的人员的Google+ ID,并将其与您网站上已存储的Google+ ID进行比较用户。
  3. 如果Bob的可见人员已经在网站上,正如Google+ ID的比较所示,请在您的私人社交图上创建优势,表明Bob与Alice有此关系。例如,如果Bob在Google+上圈出Alice,他与Alice有这种关系(Bob - > Alice,Bob圈出Alice,所以边缘是Bob到Alice)并且还创建从Alice到Bob的连接(Alice与Bob有关系)因为鲍勃在他的圈子里有爱​​丽丝。)
  4. 对于第三个用户Chet来说,同样的关系将被绘制成图,他们都有Alice和Bob在可见的圈子中,并且在Bob和Alice的圈子列表中。
  5. 在视觉上,我描述的图表如下,箭头表示从一个用户到另一个用户的边缘:

    enter image description here

    对于Photohunt,从任何用户到任何其他用户的边缘将创建一种关系,他们在网站上看到彼此连接。在此过程中,您将创建最全面的用户图,最大化用户之间的连接并最大化关系内容流中显示的内容量。

    由于图表以这种方式解释为Photohunt,Bob,Alice和Chet都看到他们通过Google+建立了关系,这反映在“社交”内容流中。在计算上,每次新用户与您的网站连接时,您只需要执行检查。

    然而,可能存在隐私问题:爱丽丝是否希望鲍勃知道她在网站上?

    为了缓解此隐私问题,您还可以在识别出Alice在Bob的圈子中时执行另一项检查,然后对Alice的可见人员执行第二次people.list API调用。当Bob与Alice建立连接时,您可以确保Bob与Alice有关系,然后才能显示两个用户都在该站点上。因此,只有具有相互联系的人才会知道他们在网站上。对于这种情况,只有切特和爱丽丝会看到对方,只有鲍勃和切特才能看到对方。因为Bob和Alice没有相互联系,所以他们没有看到对方。

    图表的第三种解释是跟踪“在可见的人中”,关系,跟踪“在我的可见人员列表中”,最后,“已经相互可见”你的网站。

    正如布雷特指出的那样,乔安娜澄清道,对于产生相互关系或部分关系会产生影响。您可能需要为Google+用户ID保留边缘图表,以存储您网站上尚不存在的连接,或者您必须有效地轮询识别连接的所有用户。但是,如果您想将资源用于生成私有图,那么今天就可以这样做。在手机上执行这些计算的含义相当可怕。如果你这样做,我建议你在PHP / MySQL服务器上计算和维护图形服务器端。

    从数据库的角度来看,您只会存储“边缘”关系。这极大地简化了对图形的查询,并且只返回那些具有创建您想要跟踪或公开的关系所需的正确边缘约束的用户。

答案 1 :(得分:0)

API调用有一个已知的功能请求可以执行此操作。如果您想跟踪此API调用的此进度,可以将以下问题加以解决,以获取其上的电子邮件更新。 https://code.google.com/p/google-plus-platform/issues/detail?id=531