Как проверить токен доступа в Facebook? - PullRequest
94 голосов
/ 22 декабря 2011

есть только одна вещь, которую должен делать сервер; просто проверьте действительность любого токена доступа.

клиенты отправляют на сервер идентификатор пользователя и токен доступа, полученный FB.getLoginStatus.

Как я и ожидал, будет любой URL-адрес, проверяющий действительность токена доступа, например

http://xxx.facebook.com/access_token?=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

, который возвращает, доступен ли он один или нет.

или для этого есть какой-либо API (на стороне сервера)?

Ответы [ 6 ]

124 голосов
/ 30 мая 2013

Официально поддерживаемый метод для этого:

GET graph.facebook.com/debug_token?
     input_token={token-to-inspect}
     &access_token={app-token-or-admin-token}

См. документацию по проверочному токену для получения дополнительной информации.

Пример ответа:

{
    "data": {
        "app_id": 138483919580948, 
        "application": "Social Cafe", 
        "expires_at": 1352419328, 
        "is_valid": true, 
        "issued_at": 1347235328, 
        "metadata": {
            "sso": "iphone-safari"
        }, 
        "scopes": [
            "email", 
            "publish_actions"
        ], 
        "user_id": 1207059
    }
}
71 голосов
/ 22 декабря 2011

Вы можете просто запросить https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxx, если получите ошибку, токен недействителен.Если вы получите объект JSON со свойством id, то он действителен.

К сожалению, он будет сообщать вам только о том, действителен ли ваш токен, а не о том, пришел ли он из вашего приложения.

23 голосов
/ 26 апреля 2017

Просто хотел сообщить, что до сегодняшнего дня я сначала получал токен доступа к приложению (через GET-запрос к Facebook), а затем использовал полученный токен как app-token-or-admin-token in:

GET graph.facebook.com/debug_token?
    input_token={token-to-inspect}
    &access_token={app-token-or-admin-token}

Однако, я только что понял лучший способ сделать это (с дополнительным преимуществом, требующим на один запрос GET меньше):

GET graph.facebook.com/debug_token?
    input_token={token-to-inspect}
    &access_token={app_id}|{app_secret}

Как описано в документации Facebook для токенов доступа здесь .

1 голос
/ 11 октября 2018

Просто запрос (HTTP GET):

https://graph.facebook.com/USER_ID/access_token=xxxxxxxxxxxxxxxxx

Вот и все.

1 голос
/ 17 августа 2018

Токен приложения можно найти по этому URL.

https://developers.facebook.com/tools/accesstoken

1 голос
/ 16 января 2017

Обмен Access Token для Mobile Number and Country Code (на стороне сервера ИЛИ на стороне клиента)

Вы можете получить mobile number с вашим access_token с этим API https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxx. Может быть, один разу вас есть mobile number и id, вы можете работать с ним, чтобы проверить пользователя с помощью server & database.

xxxxxxxxxx выше - Access Token

Пример ответа:

{
   "id": "61940819992708",
   "phone": {
      "number": "+91XX82923912",
      "country_prefix": "91",
      "national_number": "XX82923912"
   }
}


Обмен Auth Code для Access Token(На стороне сервера)

Если вместо этого у вас есть Auth Code, вы можете сначала получить Access Token с этим API - https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access_token=AA|yyyyyyyyyy|zzzzzzzzzz

xxxxxxxxxx, yyyyyyyyyy иzzzzzzzzzz выше - Auth Code, App ID и App Secret соответственно.

Пример ответа

{
   "id": "619XX819992708",
   "access_token": "EMAWdcsi711meGS2qQpNk4XBTwUBIDtqYAKoZBbBZAEZCZAXyWVbqvKUyKgDZBniZBFwKVyoVGHXnquCcikBqc9ROF2qAxLRrqBYAvXknwND3dhHU0iLZCRwBNHNlyQZD",
   "token_refresh_interval_sec": XX92000
}

Примечание. - Это предпочтительнее для server-side, так как API требует APP Secret, которое не должно быть shared для security reasons.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...