Увеличивают токены Facebook Oauth 2.0?

Я играю с авторизацией Oauth 2.0 в Facebook и задаюсь вопросом, проходит ли токен доступа Facebook, когда-либо истекающий. Если да, существует ли способ запросить токен доступа долгого срока?

Ответ 1

После копания немного, я нашел это. Кажется, это ответ:

offline_access: Позволяет вашему заявлению выполнять авторизированные запросы от имени пользователя в любое время. По умолчанию большинство токенов доступа истекают через короткий промежуток времени, чтобы гарантировать, что приложения выполняют запросы только от имени пользователя, когда они активно используют приложение. Это разрешение делает маркер доступа, возвращенный нашей конечной точкой OAuth долговечным.

Требуется запрашиваемое значение.

http://developers.facebook.com/docs/authentication/permissions

UPDATE

Домен offline_access был удален некоторое время назад.

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/

Ответ 2

Попробуйте это, возможно, это поможет вам полностью

https://graph.facebook.com/oauth/authorize?
    client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
    redirect_uri=http://www.example.com/

Чтобы получить токен доступа к жизни, вы должны использовать scope=offline_access

Значение scope=offline_access заключается в следующем: -

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

Но в соответствии с обновлением будущей версии facebook функциональность offline_acees будет устаревать навсегда с 3 октября 2012 года.   и пользователю будет предоставлен токен доступа на 60 дней и до истечения срока действия токена доступа Facebook уведомит об этом или вы сможете получить свои пользовательские функции уведомлений, получая значение срока действия с Facebook Api..

Ответ 3

Обратите внимание, что Facebook теперь обесценивает разрешение offline_access в пользу токенов, для которых вы можете запросить "обновление" до истечения срока действия. Я просто сейчас занимаюсь этим, поэтому мне больше нечего сказать, но этот документ может помочь:

https://developers.facebook.com/docs/offline-access-deprecation/

Ответ 4

Я пришел сюда с тем же вопросом, что и OP, но ответы, предлагающие использование offline_access, поднимают для меня красные флаги.

Безопасный доступ к автономному доступу к учетной записи пользователя Facebook качественно отличается и намного более мощным, чем просто использование Facebook для единого входа, и его нельзя использовать легко (если вам это действительно не нужно). Когда пользователь предоставляет это разрешение, "приложение" может в любое время проверить учетную запись пользователя. Я помещал "приложение" в кавычки, потому что это фактически любой инструмент, который имеет учетные данные - вы могли бы script создать целый набор инструментов, которые не имеют никакого отношения к веб-серверу, который может получить доступ к любой информации, которую пользователь согласился предоставить на эти учетные данные.

Я бы не использовал эту функцию для работы с коротким временем жизни токенов; это не его цель. Действительно, время жизни токена является функцией безопасности. Я все еще ищу подробности о правильном использовании этих токенов (могу ли я их сохранить? Как я/должен их защитить? Встраивает ли Facebook токен обновления OAuth 2.0 внутри основного? Если нет, то где это и/или как я обновляю?), но я уверен, что offline_access не подходит.

Ответ 5

Да, они истекают. Существует значение "expires", которое передается вместе с "access_token" и из того, что я могу рассказать примерно за 2 часа. Я искал, но не вижу способа запросить более длительный срок действия.

Ответ 6

так как у меня была та же проблема - см. превосходную запись на эту тему от ben bidton, которая разъяснила все эти проблемы с неправильным токеном и правильным типом для отправки для запросов.

http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

Ответ 7

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

Цитата из facebook http://developers.facebook.com/docs/authentication/

Примечание. Если приложение не запросило разрешения offline_access, токен доступа ограничен по времени. Точный токен доступа также недействителен, когда пользователь выходит из Facebook. Если приложение получило разрешение пользователя offline_access от пользователя, токен доступа не имеет срока действия. Однако он становится недействительным всякий раз, когда пользователь меняет свой пароль.

Предположим, что вы храните пользовательский facebook uid и токен доступа в таблице пользователей в своей базе данных, каждый раз, когда пользователь нажимает кнопку "Войти с помощью facebook", вы проверяете API-интерфейс входа в систему, используя API-интерфейс facebook Javascript, а затем проверяете состояние подключения из ответа, если пользователь подключился к вашему сайту, вы можете обновить токен доступа в таблице.

Ответ 8

Поделитесь этим, чтобы обменивать короткий токен доступа к проживанию в течение длительного срока жизни/без истечения срока действия (страницы):

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

Ответ 9

войдите в учетную запись facebook и измените настройки своего приложения (учетная запись → настройка приложения → дополнительное разрешение приложения, использующего вашу учетную запись). снимите флажок (доступ к моим данным, когда я не использую приложение (offline_access)). Затем лицо забронирует новый токен при входе в приложение.

Ответ 10

Базовый токен facebook истекает примерно через час. Но вы можете использовать токен "обмен", чтобы получить долгоживущий токен https://developers.facebook.com/docs/facebook-login/access-tokens

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 

Ответ 11

проверьте, когда вы взаимодействуете с графиком facebook api.

1) URL-адрес приложения должен быть базой вашего "redirect_uri" connect URL: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Ваша "redirect_uri" должна быть одинаковой в обоих случаях (когда вы запрашиваете код подтверждения и запрашиваете access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) вы должны закодировать аргумент, когда вы запрашиваете access_token 4) не должен передавать аргумент (type = client_cred), когда вы запрашиваете access_token. сервер авторизации выдаст токен без сеансовой части. мы не можем использовать этот токен с псевдонимом "me" в графике api. Этот токен будет иметь длину (40), но токен с частью сеанса будет иметь длину (81). Маркер доступа без части сеанса будет работать с некоторыми случаями

например: - https://graph.facebook.com/? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Но Graph API с псевдонимом "me" будет работать только с токеном с частью сеанса.

Ответ 12

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

В любом случае, иногда требуется, чтобы пользователь предоставлял автономные разрешения, является излишним. В зависимости от ваших потребностей, возможно, достаточно, чтобы токен оставался действительным, пока веб-сайт открывается в пользовательском браузере. Для этого может быть более простое решение - периодическое переключение пользователя с помощью iframe: facebook auto re-login из cookie php

Работал для меня...