4

我正在建立一个网站,我想允许谷歌登录。我不希望我的客户再次将他们的个人资料图片上传到我的网站。我对如何使用 facebook 进行操作有一些线索,但是一旦用户通过 Google 帐户进行身份验证,我如何从 google plus 帐户中获取个人资料图片?有没有这方面的API?如果是,请分享。

4

8 回答 8

8

当 plus 客户端连接时,我们可以通过 plus 客户端轻松获取它,即

if(plusClient.isConnected){

            plusClient.getCurrentPerson().getImage().getUrl();

}

它将为您提供图像的 url。

于 2014-04-25T06:51:42.647 回答
6

您可以使用给定的技巧获取 Google 个人资料图片 URL:

老把戏

https://plus.google.com/s2/photos/profile/(user_id)?sz=150

但这现在不起作用,因为谷歌已经改变了他们的政策,所以下面给出了这样做的新技巧

新把戏

请求网址

https://www.googleapis.com/plus/v1/people/115950284...320?fields=image&key={YOUR_API_KEY}

这将以 json 格式提供 Google 个人资料图片网址,如下所示

回复 :

{
    "image": 
    {
         "url": "https://lh3.googleusercontent.com/-OkM...AANA/ltpH4BFZ2as/photo.jpg?sz=50"
    }
}


有关更多详细信息,您还可以查看 如何通过 Google plus 中的用户 ID 获取用户图像?

编码快乐!!

于 2014-03-20T12:19:10.067 回答
2

有关详细信息,请参阅https://developers.google.com/+/api/latest/people/get,但通常您需要执行以下步骤:

  1. 使用 OAuth2,使用plus.login范围对它们进行身份验证。
  2. 他们登录后,您可以使用 people.get 方法和 userId 值为“me”。这给出了他们完整的个人资料
  3. 他们的照片将在image.url现场
于 2014-02-03T00:36:59.687 回答
1

+1 @Prisoner 所说的,您应该使用 plus.login 对用户进行身份验证,然后使用特殊字符串检索用户me

获取照片 URL 和封面照片 URL 的完整示例。

<html>
  <head>
  <script src="https://apis.google.com/js/client:plusone.js"></script>
  </head>
  <body>
    <span id="signinButton">
      <span
        class="g-signin"
        data-callback="signinCallback"
        data-clientid="YOUR_CLIENT_ID"
        data-cookiepolicy="single_host_origin"
        data-requestvisibleactions="http://schemas.google.com/AddActivity"
        data-scope="https://www.googleapis.com/auth/plus.login">
      </span>
    </span>
    <script>
      function signinCallback (resp) {
        gapi.client.load('plus', 'v1', function() {
          gapi.client.plus.people.get({userId: 'me'}).execute(getProfilePic);
        });
      }
      function getProfilePic(person){
        console.log(person.image.url);
        console.log(person.cover.coverPhoto.url);
      }
    </script>
  </body>
</html>

当页面加载时,会呈现登录按钮,当用户登录时,会触发回调。触发回调时,加载plus客户端。在 plus 客户端加载之后,对 people.get 进行 API 调用。

于 2014-02-03T18:28:33.800 回答
1

愿此代码帮助您获取带有图片的 Google+ 个人资料信息

<?php  
  /* * Copyright 2011 Google Inc. 
  * 
  * Licensed under the Apache License, Version 2.0 (the "License"); 
  * you may not use this file except in compliance with the License. 
  * You may obtain a copy of the License at 
  * 
  * http://www.apache.org/licenses/LICENSE-2.0 
  * 
  * Unless required by applicable law or agreed to in writing, software 
  * distributed under the License is distributed on an "AS IS" BASIS, 
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  * See the License for the specific language governing permissions and 
  * limitations under the License. 
  */  
  require_once 'google-api-php-client/src/apiClient.php';  
  require_once 'google-api-php-client/src/contrib/apiPlusService.php';  
session_start();  
$id = $_POST['id'];  
$client = new apiClient();  
  $client->setApplicationName("Google+ PHP Starter Application");  
  // oauth2_client_id, oauth2_client_secret, and to register your oauth2_redirect_uri.  
  $client->setClientId('357142505911.apps.googleusercontent.com');  
  $client->setClientSecret('LbJa7YOJ1Th-e-TOosEJxI4A');  
  $client->setRedirectUri('http://www.w3resource.com/API/google-plus/example.php');  
  $client->setDeveloperKey('AIzaSyD3stLpkt7jJw0mkMsJtM9m_zrgg26rrsI');  
  $plus = new apiPlusService($client);  
if (isset($_REQUEST['logout'])) {  
  unset($_SESSION['access_token']);  
  }  
if (isset($_GET['code'])) {  
  $client->authenticate();  
  $_SESSION['access_token'] = $client->getAccessToken();  
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);  
  }  
if (isset($_SESSION['access_token'])) {  
  $client->setAccessToken($_SESSION['access_token']);  
  }  
if ($client->getAccessToken()) {  
  $me = $plus->people->get($id);  
$optParams = array('maxResults' => 100);  
  $activities = $plus->activities->listActivities($id, 'public', $optParams);  
// The access token may have been updated lazily.  
  $_SESSION['access_token'] = $client->getAccessToken();  
  } else {  
  $authUrl = $client->createAuthUrl();  
  }  
  ?>  
<!doctype html>  
  <html>  
  <head><link rel='stylesheet' href='style.css' /></head>  
  <body>  
  <header><h1>Google+ Sample App</h1></header>  
  <div class="box">  
<?php if(isset($me) && isset($activities)): ?>  
  <div class="me">  
  <p><a rel="me" href="<?php echo $me['url'] ?>"><?php print $me['displayName'] ?></a></p>  
  <p><?php print $me['tagline'] ?></p>   
  <p><?php print $me['aboutMe'] ?></p>   
  <div><img src="<?php echo $me['image']['url']; ?>?sz=82" /></div>  
  </div>  
  <div class="activities">Your Activities:  
  <?php foreach($activities['items'] as $activity): ?>  
  <div class="activity">  
  <p><a href="<?php print $activity['url'] ?>"><?php print $activity['title'] ?></a></p>  
  </div>  
  <?php endforeach ?>  
  </div>  
  <?php endif ?>  
  <?php  
  if(isset($authUrl)) {  
  print "<a class='login' href='$authUrl'>Connect Me!</a>";  
  } else {  
  //print "<a class='logout' href='?logout'>Logout</a>";  
  }  
  ?>  
  </div>  
  </body>  
  </html>  

来源:http ://www.w3resource.com/API/google-plus/tutorial.php#

于 2016-03-23T08:56:08.010 回答
0

http://www.avatarapi.com/提供了一个 API,它根据 Google 的公开信息返回用户的姓名和个人资料图片。

可以在此 API 端点通过 SOAP 或 HTTP 调用它: http ://www.avatarapi.com/avatar.asmx

此 API 的好处之一是它不需要用户通过 Google 进行身份验证。但是,在您的特定情况下,这将是一个问题。

于 2016-07-31T11:08:50.073 回答
0

根据新方式登录谷歌的文档,

公共 Uri getPhotoUrl ()

如果用户有个人资料图片并且您从新的 GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)} 或配置了 requestProfile() 开始构建配置,则返回已登录用户的照片 url;否则为空。不保证对所有用户都存在,即使已配置。

正如最后一行所说 Not guaranteed to be present for all users, even when configured,您应该处理 null 情况。

P/S:有时,如果已经创建了 Google+ 个人资料图片,但在您在设备中添加 Google 帐户之后,您可能需要从设备中删除现有的 Google 帐户,然后重新添加。

于 2016-03-23T08:46:48.197 回答
-2

此处建议使用以下网址:

https://plus.google.com/s2/photos/profile/GOOGLE-ID?sz=100

我以前从未在任何文档中看到过这一点,因此 Google+ 可能不支持,但现在可以使用。

也许 +class 或 +Prisoner 可以说一些关于此 url 的支持以获取个人资料图片的信息?

于 2014-02-04T09:58:48.627 回答