Глобальный идентификатор не разрешен. Вместо этого используйте идентификатор приложения

В Graph API 2.0

Когда я использую новый график api для доступа к информации моих друзей, я получил сообщение ниже.

Здесь xxx - это идентификатор пользователя.

{
  "error": {
    "message": "The global ID xxx is not allowed. Please use the application specific ID instead.", 
    "type": "OAuthException", 
    "code": 2500
  }
}

Какой конкретный идентификатор приложения? По крайней мере, в документах ничего нет. (Если я использую Graph API 1.0, все будет хорошо.)

Ответы

Ответ 1

Вот выдержка из сообщения в блоге Я написал на эту тему, что отвечает на ваш вопрос:

В более простые дни v1.0, когда API-интерфейс Graph API сообщил пользователю, значение id, которое оно предоставило, было глобальным идентификационным номером для этого пользователя Facebook. Эти значения были "глобальными" в том смысле, что они могут использоваться совместно с клиентскими приложениями. В версии 2.0 все пользовательские данные, предоставленные конечной точкой /user, и ее дочерние пользователи используют идентификаторы приложения. Эти идентификаторы являются уникальным идентификатором не только пользователя Facebook, но и пары клиент-пользователь. Это означает, что вы не можете делиться идентификаторами пользователей между приложениями. (Хотя Facebook предоставляет API для сопоставления между приложениями, которые являются частью единой организации.)

Важным последствием этого факта является то, что идентификаторы пользователей, распознанные приложениями Facebook, которые вы используете для разработки, не будут соответствовать тем, которые распознает ваше производственное приложение. Таким образом, если вы храните своих пользователей Facebook в своей базе данных в своей продукции, вы не сможете сопоставить пользователей в этой базе данных с данными, возвращаемыми API в процессе разработки. Это раздражает!

И это не так. Вам просто нужно запросить нескольких своих друзей из приложения для разработки и вручную перезаписать их сохраненные идентификаторы Facebook в базе данных разработки. Это даст вам несколько примеров для разработки против.

Ответ 2

Чтобы легко остановить эту проблему, я просто добавил "version: 'v1.0" в свой FB.init следующим образом:

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

Конечно, это временно и необходимо просмотреть различные документы, как было предложено Asymmetric

Ответ 3

Для приложений, использующих API версии 2.0, вы можете использовать только App-Scoped-ID для доступа к данным о пользователе на версии 2.0 +

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

Здесь больше информации о том, как работают идентификаторы приложений Scope: https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

Ответ 4

Это потому, что вы используете токен доступа для приложений вместо токена доступа пользователя

Попробуйте использовать токен пользователя из на этой странице:

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

https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}

После того, как вы получите этот код, вы выкупите его для токена доступа пользователя с таким запросом:

GET https://graph.facebook.com/oauth/access_token?client_id={app-id}&redirect_uri={redirect-uri}&client_secret={app-secret}&code={code-parameter}

Ответ 5

Глобальный идентификатор - это ваш идентификатор пользователя, идентификатор приложения - это идентификатор, доступ к которому вы можете получить (никто не знает)! Это сообщение означает, что Facebook не аутентифицирует ваше приложение с разрешения на доступ к вашему профилю! Другими словами, вам необходимо предоставить токен доступа для своего пользователя, предоставляя приложению соответствующие разрешения для доступа к вашим данным. Вы можете получить кратковременный токен доступа вручную от Graph API Exlorer здесь https://developers.facebook.com/tools/explorer Чтобы получить доступ к информации о ваших друзьях, вы должны предоставить разрешение user_friends. Подробнее о токенах доступа и их жизни здесь: https://developers.facebook.com/docs/facebook-login/access-tokens