Авторизация через facebook, мусор в строке url "#_=_"

sanu0074

Новичок
При авторизации на сайте через facebook, к заголовку redirect_uri, прилеплевается странная последовательность символов: #_=_
Это происходит если делать редирект с помощью header(Location: url)
Если делать редирект например так:
PHP:
exit('<META HTTP-EQUIV="refresh" CONTENT="0; url=/">');
то этих символов нет...
Вопрос чисто из интереса, как убрать эти символы из url при редиректе с помощью header() ?
я гуглил, вроде как и есть решение проблемы, но не могу догнать что сделать надо (в англ. не оч), нашел вот такой пост, про этот трабл написано под заголовком "Change in Session Redirect Behavior" на странице... Помогите разобраться.
 

AnrDaemon

Продвинутый новичок
Заполняй анчор сам. Тогда он не будет заменяться.
 

CoolKid

Новичок
А код можно посмотреть, который все вышеописанное делает?
 

sanu0074

Новичок
CoolKid,
PHP:
        $params = array(
            'client_id'    => $client_id,
            'redirect_uri'  => $redirect_uri,
            'response_type' => 'code',
            'scope'        => 'email,user_hometown,user_photos,offline_access'
        );
        if (isset($_GET['code'])) {
            $params = array(
                'client_id'    => $client_id,
                'redirect_uri'  => $redirect_uri,
                'client_secret' => $client_secret,
                'code'          => $_GET['code']
            );
            $url = 'https://graph.facebook.com/oauth/access_token';
            $tokenInfo = null;
            parse_str(file_get_contents($url . '?' . http_build_query($params)), $tokenInfo);
            if (count($tokenInfo) > 0 && isset($tokenInfo['access_token'])) {
                $params = array('access_token' => $tokenInfo['access_token']);
                $data = json_decode(file_get_contents('https://graph.facebook.com/me' . '?' . urldecode(http_build_query($params))),TRUE);
                $img = 'http://graph.facebook.com/'.$data['id'].'/picture?type=large&redirect=false';
                $img = $this->sendRequest($img);
                $img = json_decode($img,TRUE);
                $data['avatar'] = $img['data']['url'];
                $this->userData['fb_id']=$data['id'];
                $this->userData['email']=$data['email'];
                $this->userData['first_name']=$data['first_name'];
                $this->userData['last_name']=$data['last_name'];
                $this->userData['login']=$data['first_name']."-".$data['last_name'];
                $this->userData['bdate']=date("Y-m-d G:i:s",strtotime($data['birthday']));
                if($data['gender']=='male'){
                    $this->userData['sex']="m";
                }else if($data['gender']=='female'){
                    $this->userData['sex']="w";
                }else{
                    $this->userData['sex']="x";
                }
                if(preg_match("/,/", $data['hometown']['name'])){
                    $addr = explode(",", $data['hometown']['name']);
                    if(count($addr)>1){
                        $this->userData['city']=trim($addr[0]);
                        $this->userData['country']=trim($addr[1]);
                    }
                }
                $this->userData['avatar']=$data['avatar'];
                $this->beginLogin();
            }
        }else {
            header("Location: ".$url . '?' . urldecode(http_build_query($params)));
        }
beginLogin() сохраняет данные в куки и делает редирект на главную страницу с помощьюheader()
 

CoolKid

Новичок
Ну собственно вот здесь все разжевано. Сделай так как говорит автор ответа и будет счастье.
Англ. не обязательно знать оч. чтобы понять о чем там речь
 

AnrDaemon

Продвинутый новичок
This week, we started adding a fragment #_=_ to the redirect_uri when this field is left blank. Please ensure that your app can handle this behavior.
С этой недели мы начали добавлять фрагмент "#_=_" к redirect_uri, если это поле оставлено пустым. Пожалуйста, убедитесь, что ваше приложение в состоянии обработать подобное поведение.
 

sanu0074

Новичок
CoolKid, так работает, но более лучше - META HTTP-EQUIV, вопрос конкретно про способ с помощью header()
 

AnrDaemon

Продвинутый новичок
К redirect_uri, а не вместо него. Пожалуйста, читай документацию дословно.
 

AnrDaemon

Продвинутый новичок
Вероятно, да. Либо удалять, если для тебя это так критично.
Лучше скажи, что тебя смущает?
 

sanu0074

Новичок
AnrDaemon, шапку читай
Если делать редирект например так:
PHP:
exit('<META HTTP-EQUIV="refresh" CONTENT="0; url=/">');
то этих символов нет...
Вопрос чисто из интереса, как убрать эти символы из url при редиректе с помощью header().....
 

AnrDaemon

Продвинутый новичок
Прочитал. Не понял. Если в документации прописано, что то-то и то-то будет добавлено, какой же это мусор?
 
Сверху