10

我想获取从我的应用程序登录的用户的所有谷歌私人连接。我启用了 Google People 和 Google Plus API。我设置了凭据 API 密钥、客户端 ID 和客户端密码。我试图获取用户连接的网址是

https://people.googleapis.com/v1/people/me/connections?fields=connections&key=api_key&access_token=access_token

另外,我正在使用图书馆passport-google-oauth来获取用户 access_token。上面的 URL 中有什么我遗漏的东西吗?

我的谷歌身份验证码是

    // send to google to do the authentication
    // profile gets us their basic information including their name
    // email gets their emails
    app.get('/auth/google', passport.authenticate('google', {
        scope: ['profile', 'email','https://www.googleapis.com/auth/contacts.readonly', 'https://www.googleapis.com/auth/contacts']
    }));

    // the callback after google has authenticated the user
    app.get('/auth/google/callback',
    passport.authenticate('google', {
        successRedirect: '/profile',
        failureRedirect: '/'
    }));
4

1 回答 1

2

您没有提到您遇到了什么错误,但通过查看您使用的网址,我可以告诉您一些事情。

people.connections.list访问私人用户数据。因此,您不需要添加仅用于访问公共数据的密钥。但是,两者都不应导致任何错误消息。

我已经测试了您发送的请求,它确实有效,但是此请求要求您至少已使用其中一个连接范围进行身份验证。

https://www.googleapis.com/auth/contacts 请求为您的应用授予对经过身份验证的用户的 Google 通讯录中联系人的读写访问权限。 https://www.googleapis.com/auth/contacts.readonly请求为您的应用授予对经过身份验证的用户的 Google 通讯录中联系人的读取权限。

如果您还没有,那么您将收到一条无法访问的错误消息。

{
  "error": {
    "code": 403,
    "message": "Request had insufficient authentication scopes.",
    "status": "PERMISSION_DENIED"
  }
}
于 2017-03-15T08:06:02.593 回答