@kimisa

Получить аватар от ok.ru и mai.ru?

На фейсбуке и вконтакте все просто - вбиваешь id пользователя и получаешь данные пользователя.
С одноклассниками и майлом всё намного сложнее. Там идет вначале авторизация. И вот тут возникает проблема - как получить аватар, если идет переадресация на соц сети и просит авторизоваться. Как без этого получить аватар?
define ('OK_APP_ID', '******');
 define ('OK_APP_PUBLIC', '*******');
define ('OK_APP_SECRET', '******');
define ('OK_URL_CALLBACK', 'http://www.7idei-remonta.ru/otziv.html?action=odnoklasniki');
define ('OK_URL_AUTHORIZE', 'http://www.odnoklassniki.ru/oauth/authorize');
define ('OK_URL_GET_TOKEN', 'http://api.odnoklassniki.ru/oauth/token.do');
define ('OK_URL_ACCESS_TOKEN', 'http://api.odnoklassniki.ru/fb.do');

if (empty($_GET['code'])) {
    self::redirect(OK_URL_AUTHORIZE . '?client_id=' . OK_APP_ID . '&response_type=code' . '&redirect_uri=' . urlencode(OK_URL_CALLBACK));
}

$_SESSION['odnoklasniki']['code'] = $_GET['code'];

if (empty($_SESSION['odnoklasniki']['token'])) {
    $data = array(
          'code' => $_SESSION['odnoklasniki']['code'],
          'redirect_uri' => OK_URL_CALLBACK,
          'client_id' => OK_APP_ID,
          'client_secret' => OK_APP_SECRET,
          'grant_type' => 'authorization_code',
);

    $opts = array('http' =>
        array(
              'method' => 'POST',
               'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Accept: */*\r\n",
                'content' => http_build_query($data)
         )
      );

     if (!($response = @file_get_contents(OK_URL_GET_TOKEN, false, stream_context_create($opts))))
            self::redirect();

      $result = json_decode($response);

      if (empty($result->access_token)) self::redirect();
      else  $_SESSION['odnoklasniki']['token'] = $result->access_token;
 }

// проверка токена и взятие информации о текущем пользователе
$url = OK_URL_ACCESS_TOKEN .
'?access_token=' . $_SESSION['odnoklasniki']['token'] .
 '&method=users.getInfo' .
 '&application_key=' . OK_APP_PUBLIC .
 '&fields=pic_1' .
 '&uids=' . $val['slogin_id'] .
  '&sig=' . md5('application_key=' . OK_APP_PUBLIC . 'fields=pic_1method=users.getInfouids=' . $val['slogin_id'] .
                                    md5($_SESSION['odnoklasniki']['token'] . OK_APP_SECRET));

 if (!($response = @file_get_contents($url))) self::redirect();

    $user = json_decode($response);


P.S. В браузере, где я вошла в соц сеть, все работает хорошо, проблемы начинаются если я не авторизована.
  • Вопрос задан
  • 3623 просмотра
Пригласить эксперта
Ответы на вопрос 1
@likeapimp
web dev, web design
С помощью оф апи пробовали? api.mail.ru/docs/reference/rest/users-getinfo
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы