function setAvatar($user) { $picUrl = sprintf('http://graph.facebook.com/%s/picture?type=large', $this->fbuid); // fetch the picture from Facebook $client = new HTTPClient(); // fetch the actual picture $response = $client->get($picUrl); if ($response->isOk()) { $finalUrl = $client->getUrl(); // Make sure the filename is unique becuase it's possible for a user // to deauthorize our app, and then come back in as a new user but // have the same Facebook picture (avatar URLs have a unique index // and their URLs are based on the filenames). $filename = 'facebook-' . common_good_rand(4) . '-' . substr(strrchr($finalUrl, '/'), 1); $ok = file_put_contents(Avatar::path($filename), $response->getBody()); if (!$ok) { common_log(LOG_WARNING, sprintf('Couldn\'t save Facebook avatar %s', $tmp), __FILE__); } else { // save it as an avatar $profile = $user->getProfile(); if ($profile->setOriginal($filename)) { common_log(LOG_INFO, sprintf('Saved avatar for %s (%d) from Facebook picture for ' . '%s (fbuid %d), filename = %s', $user->nickname, $user->id, $this->fbuser['name'], $this->fbuid, $filename), __FILE__); } } } }