16

これらすべての手順に従いました。

https://developers.google.com/+/web/signin/

クライアントIDとクライアントシークレットがあります。

アクセス トークンを取得しました。アクセス トークンを含むユーザー プロファイルと電子メールを取得するにはどうすればよいですか? また、ユーザーがログインしているかどうかを確認する方法は?

4

4 に答える 4

26

OAuth2 を使用すると、スコープ パラメーターを介してアクセス許可を要求できます。( Documentation。)必要なスコープはhttps://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profileだと思います。

次に、アクセス トークンを取得したら、プロファイル情報を取得するのは簡単なことです。(返された認証コードをアクセス トークンに引き換えることができたと思いますか?) https://www.googleapis.com/oauth2/v1/userinfo?access_token= {accessToken}に対して get リクエストを行うだけで、電子メールを含むプロファイル データの JSON 配列:

{
    "id": "00000000000000",
    "email": "fred.example@gmail.com",
    "verified_email": true,
    "name": "Fred Example",
    "given_name": "Fred",
    "family_name": "Example",
    "picture": "https://lh5.googleusercontent.com/-2Sv-4bBMLLA/AAAAAAAAAAI/AAAAAAAAABo/bEG4kI2mG0I/photo.jpg",
    "gender": "male",
    "locale": "en-US"
}

保証はありませんが、これを試してください:

$url = "https://www.googleapis.com/oauth2/v1/userinfo";
$request = apiClient::$io->makeRequest($client->sign(new apiHttpRequest($url, 'GET')));

if ((int)$request->getResponseHttpCode() == 200) {
    $response = $request->getResponseBody();
    $decodedResponse = json_decode($response, true);
    //process user info
  } else {
    $response = $request->getResponseBody();
    $decodedResponse = json_decode($response, true);
    if ($decodedResponse != $response && $decodedResponse != null && $decodedResponse['error']) {
      $response = $decodedResponse['error'];
    }
  }
}
于 2013-02-27T05:22:08.080 に答える
8

これを試して

$accessToken = 'access token';
$userDetails = file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $accessToken);
$userData = json_decode($userDetails);

if (!empty($userData)) {

  $googleUserId = '';
  $googleEmail = '';
  $googleVerified = '';
  $googleName = '';
  $googleUserName = '';

  if (isset($userData->id)) {
    $googleUserId = $userData->id;
  }
  if (isset($userData->email)) {
    $googleEmail = $userData->email;
    $googleEmailParts = explode("@", $googleEmail);
    $googleUserName = $googleEmailParts[0];
  }
  if (isset($userData->verified_email)) {
    $googleVerified = $userData->verified_email;
  }
  if (isset($userData->name)) {
    $googleName = $userData->name;
  }
} else {

  echo "Not logged In";
}
于 2013-02-27T05:18:44.107 に答える
0
$access_token = 'your access token';
$headers = array('Content-Type: Application/json');
$endpoint = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=".$access_token;


$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $endPoint);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, $header);

curl_setopt($soap_do, CURLOPT_FAILONERROR, true);
$result = curl_exec($soap_do);
于 2020-12-30T07:22:04.630 に答える