2

我正在使用 HWIOAuthBundle 从 google+ api 检索数据。为此,我扩展了 FOSUBUserProvider 类并重写 public function loadUserByOAuthUserResponse(UserResponseInterface $response) {}如下:

public function loadUserByOAuthUserResponse(UserResponseInterface $response) {
    // some check
    // ...
    // getting the attributes for the google+ api
    $attr = $response->getResponse();

    // creating and setting my user
    $user = $this->userManager->createUser();
    $user->$setter_id($username);
    $user->$setter_token($response->getAccessToken());

    $user->setEmail($response->getEmail());
    $user->setEmailCanonical($response->getEmail());
    if (isset($attr['gender'])) {
        if ($attr['gender'] == 'male')
            $user->setGoogleGender(true);
        else
            $user->setGoogleGender(false);
        }
        if (isset($attr['birthday'])) {
            $user->setGoogleBirthday(new \DateTime($attr['birthday']));
        }
        if (isset($attr['name'])) {
            // $attr['name'] contains displayName (givenName and familyName together)
        }

return $user;
}

这就是在 google+ 中定义此人的方式。

{
 "kind": "plus#person",
 "etag": "XXXX",
 "gender": "male",
 "objectType": "person",
 "id": "9999999999999",
 "displayName": "Jule Dupond",
 "name": {
  "familyName": "Dupond",
  "givenName": "Jule"
 },
 "url": "https://plus.google.com/9999999",
 "image": {
  "url": "https://....",
  "isDefault": true
 },
 "isPlusUser": true,
 "circledByCount": 1,
 "verified": false
}

我的目标只是检索givenNamefamilyName.

谢谢你给我一个想法!

4

1 回答 1

1

我找到了解决方案。要获取 familyName 和 givenName,您只需要这个:$attr['given_name']$attr['family_name'].

希望它会帮助别人......

于 2014-10-08T14:21:15.250 回答