为appengine应用程序收集g +头像/名称的最佳方式

时间:2014-08-28 16:07:18

标签: python google-plus google-api-client

编辑原始问题:

我试图制作一个使用g +头像和人名的谷歌appengine应用程序......

...

所以我的应用程序似乎需要google-api-python-client库。

...

启用对配置文件范围的访问,这样我就可以查找“我”并获取用户名和头像并将其放入我的用户对象中的几个属性中(使用按钮重新加载值或其他内容)。

有人这样做吗?或者有一个工作示例(甚至是指向我的应用程序授权范围= [profile]的方法的指针)?


发现:

我不需要google-api-python-client库。简单的方法是在客户端上使用纯js进行g +访问,然后查找并将结果推送到我的appengine应用程序。它不像通过后端那样安全,但它只适用于displayname和icon(无论如何都可以手动设置)。

我确实需要做一些其他调整才能让它工作......

遵循此工作流程:   https://developers.google.com/+/web/signin/javascript-flow

需要注意的重要事项:

  • 第1步还应声明您必须填写“API& auth” - > “同意屏幕”字段“PRODUCT NAME”和“EMAIL ADDRESS”或者您会收到奇怪的错误

    您(可能)必须先 生成凭据(或删除并重新创建)

    (感谢回答:Error: invalid_client no application name

  • 将meta google-signin-scope设置为“个人资料”(或者可能是“电子邮件”)

  • 删除google-signin-requestvisibleactions的元标题(否则我的框架会出现相同的错误)

  • 显然,步骤4中的按钮行需要在文档中的正文标记之后

  • 跳过步骤2,步骤2中的代码也包含在步骤4

  • 也在工作流程页面上,该页面上的“工作示例”按钮不起作用(不要尝试)

一旦我这样做,我可以将以下内容放入成功的回调代码中并进行查找:

gapi.client.load('plus','v1', function(){
  var request = gapi.client.plus.people.get({ 'userId': 'me' });
  request.execute(function(resp) {
   console.log('Retrieved profile for:' + resp.displayName);
   console.log(resp);
   console.log(resp.result);
   console.log(resp.result.displayName);
   console.log(resp.result.image);
 });
});

1 个答案:

答案 0 :(得分:1)

您可以在此处查看有关如何使用客户端库的完整示例

https://code.google.com/p/google-api-python-client/source/browse/samples/plus/plus.py

我看到一段代码说明

try:
    person = service.people().get(userId='me').execute()

    print 'Got your ID: %s' % person['displayName']

https://developers.google.com/+/api/latest/people#resource

所以基本上人['image'] ['url']将成为你用户头像的路径。

完整文件夹:https://code.google.com/p/google-api-python-client/source/browse/samples/plus/