Не удается получить новый идентификатор пользователя в области приложения с помощью API Facebook 2.0

Недавно я обновил свое старое веб-приложение Facebook v1.0 до API v2.0, я изменил вызов SDK в соответствии с руководством по обновлению Facebook, затем я создал новую учетную запись facebook для входа в свое приложение, когда я позвонил мне / он все еще вернул глобальный идентификатор пользователя вместо нового идентификатора области приложения.

Что-то я делаю не так? Я также попробовал это на iPhone sdk, и он вернул новый идентификатор приложения.

Большое спасибо.

Ниже показано, как я назвал API:

<script>

function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    if (response.status === 'connected') {
        // Logged into your app and Facebook.
        testAPI();
    } else if (response.status === 'not_authorized') {
        document.getElementById('status').innerHTML = 'Please log ' +
    'into this app.';
    } else {

        document.getElementById('status').innerHTML = 'Please log ' +
    'into Facebook.';
    }
}

function checkLoginState() {
    FB.getLoginStatus(function (response) {
        statusChangeCallback(response);
    });
}

window.fbAsyncInit = function () {
    FB.init({
        appId: 'MY_APPID',
        cookie: true,  // enable cookies to allow the server to access 
        // the session
        xfbml: true,  // parse social plugins on this page
        version: 'v2.0' // use version 2.0
    });

    FB.getLoginStatus(function (response) {
        statusChangeCallback(response);
    });

};

(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'facebook-jssdk'));

function testAPI() {
    FB.api('v2.0/me', function (response) {
        log(response);
    });
}


comment
Вы всегда должны получать один и тот же идентификатор для пользователя, который авторизует ваше приложение — после обновления ваших вызовов аутентификации и API до версии 2.0 идентификаторы старых пользователей не должны меняться, только новые пользователи должны получать идентификаторы «приложения».   -  person Igy    schedule 30.01.2015
comment
@Igy Я знаю это. Вот почему я создал совершенно новую учетную запись, которая никогда не авторизовала приложение до того, как я изменил вызов API. Но он все равно вернул глобальный идентификатор.   -  person user3429808    schedule 30.01.2015


Ответы (1)


Пользователи, которые уже авторизовали ваше приложение в версии 1.0, сохранят тот же идентификатор. В противном случае было бы невозможно сопоставить существующих пользователей.

Если вы по-прежнему получаете глобальный идентификатор с другой учетной записью, которая никогда раньше не авторизовала приложение, скорее всего, ваше приложение не обновлено до версии 2.0.

person luschn    schedule 30.01.2015
comment
Я отредактировал сообщение со своим кодом, скажите, правильно ли я его называю. Спасибо! - person user3429808; 30.01.2015
comment
выглядит правильно для меня, хотя я не думаю, что вам нужен тег версии в вызовах API, если вы запускаете js sdk с v2.0. если вы все еще получаете глобальные идентификаторы для новых пользователей, я бы зарегистрировал ошибку. - person luschn; 30.01.2015