Чи закінчуються терміни доступу до Facebook Oauth 2.0?


124

Я граю разом з авторизацією Oauth 2.0 у Facebook і мені цікаво, чи закінчується термін дії маркерів доступу до Facebook. Якщо так, чи є спосіб подати запит на доступний маркер доступу до довгого життя?


4
Щоб додати деякі деталі до цього питання: навіть offline_access стає недійсним, коли користувач змінить свій пароль Facebook. Тому краще грати в безпеку і отримувати новий маркер доступу, якщо ви отримуєте помилки під час використання старого.
Hoàng Long

2
Щоб додати посилання: developers.facebook.com/blog/post/500
Hoàng Long

2
хлопці, ви просто просто гойдаєтесь. Яке б питання не було, я просто
вирішую

3
Схоже, 1 травня Facebook анулює дозвіл offline_access. Надалі всі маркери доступу закінчуються, коли закінчиться "час закінчення" (60 днів), користувач змінить свій пароль, користувач скасує авторизацію вашої програми або користувач вийде з системи. API . PS Я не впевнений, чому Facebook встановлює новий "термін придатності" до 60 днів, якщо маркери доступу все ще закінчуються під час виходу (схоже, користувачі, як правило, виходять із системи протягом 60 днів). Можливо, мені щось не вистачає ... термін дії
Стівен Векслер

1
Поведінка access_token зараз змінюється, вам слід шукати "Порушення змін" в липні 2012 року - дозвіл offline_access застарілий, а access_token матиме довгий життєвий цикл.
qodeninja

Відповіді:


64

Покопавши трохи, я знайшов це. Здається, відповідь:

Оновлено (11 квітня / 2018)

  • Маркер закінчується приблизно через 60 днів.
  • Маркер буде оновлюватися один раз на день протягом 90 днів, коли людина, яка користується вашим додатком, зробить запит на сервери Facebook.
  • Усі маркери доступу потрібно поновлювати кожні 90 днів за згодою особи, яка користується вашим додатком.

Оголошення про зміну у Facebook (10.04.2018)

Оновлена ​​сторінка закінчення терміну дії маркера у Facebook (10.04.2018)

offline_access: Дозволяє вашій програмі в будь-який час виконувати авторизовані запити від імені користувача. За замовчуванням більшість жетонів доступу закінчується через короткий проміжок часу, щоб додатки надсилали запити від імені користувача, коли програма активно використовує додаток. Цей дозвіл робить маркер доступу, повернутий нашою кінцевою точкою OAuth, довгоживим.

Його запитується дозволене значення.

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

ОНОВЛЕННЯ

Нещодавно видалено дозвіл offline_access.

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


2
У відповідь на це я запустив бібліотеку з відкритим кодом, яка може бути корисною вам, хлопці. Це ліцензія oAuth, яка спрямована на підтримку всіх соціальних мереж з реалізацією oAuth. Він уже підтримує розширені дозволи, включаючи публікацію в режимі офлайн. code.google.com/p/socialoauth
Тенрід

Навіть маркери offline_access закінчуються, якщо користувач змінить свій пароль у Facebook.
Бемму

На жаль, це не "чисте" рішення існуючої проблеми. Перш за все, просивши цього дозволу, попереджає користувача про додатковий дозвіл (наприклад, ця програма зможе отримати доступ до вашого акаунта у Facebook будь-який час), що вимикає багато потенційних клієнтів. По-друге, якщо користувач змінить свій пароль, цей маркер не буде дійсним. Отже, потрібен кращий спосіб (наприклад, маркер оновлення), щоб отримати новий access_token, особливо для веб-додатків, керованих ajax, керованими багатими клієнтами.
Володимир

24
Згідно з їх документацією api offline_access більше не підтримуватиметься з 2 травня 2012 року.
Бен Леш

@Tendrid Ваша бібліотека підтримує лише Facebook та Twitter.
мареофт

30

Спробуйте це, можливо, це допоможе вам повноцінно

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 ..


10
Я хотів би повідомити вам, що fb змінився в його api, і тепер немає доступного маркера часу, зараз доступ у режимі офлайн буде активний протягом 60 днів.
PrateekSaluja

21

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

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


17

Я прийшов сюди з тим же питанням, що і до ОП, але відповіді, які пропонують використовувати offline_access, викликають для мене червоні прапори.

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

Я б не використовував цю функцію, щоб подолати короткий термін життя; це не за призначенням. Дійсно, саме життя маркера є функцією безпеки. Я все ще шукаю деталі щодо правильного використання цих жетонів (чи можу я їх зберігати? Як / чи потрібно їх захистити? Чи Facebook вбудовує OAuth 2.0 "оновити маркер" у основний? Якщо ні, де це і / або як оновити?), але я впевнений, що offline_access - це не правильний шлях.


1
тут же сумніви, Девід. Ви знайшли додаткову інформацію про те, як захистити жетони, що зберігаються для доступу в автономний режим?
Ніл айс

Документи Facebook страшні, але я думаю, що ситуація в тому, що досить безпечно зберігати маркери доступу, НЕ придбані за допомогою offline_access. Хоча це правда, що кожен, хто отримує доступ до нього (поки користувач FB все ще входить у систему), може робити все, на що користувач надав вам дозвіл, це не так вже й погано, оскільки маркер недійсний, як тільки користувач виходить з facebook де завгодно. Це все-таки дірка в безпеці (мені здається дивним, що вам не потрібно вводити секрет свого додатка на запити / мені), але це не відкрито. Якщо хто стоїть на цьому, то краще виправте мене.
Девід Папа

8

Так, вони закінчуються. Існує значення "закінчується", яке передається разом із "access_token", і, як я можу сказати, воно займає приблизно 2 години. Я шукав, але не бачу способу вимагати більш тривалого терміну дії.


3
Якщо ви запитаєте дозвіл 'offline_access', маркер не закінчується.
Брендан Берг

1
@Brendan: Але він буде визнаний недійсним, як тільки користувач змінить свій пароль Facebook
Hoàng Long

@ HoàngLong будь-яке посилання на це?
Чарльз Пракаш Дасарі


4

Ви завжди можете оновити маркер доступу користувача щоразу, коли користувач заходить на ваш сайт через facebook. Офлайн-доступ не може гарантувати отримання довічного маркера доступу, маркер доступу змінюється щоразу, коли користувач відкликає вам доступ до програми або користувач змінює свій пароль.

Цитується з facebook http://developers.facebook.com/docs/authentication/

Примітка: Якщо програма не вимагає дозволу offline_access, маркер доступу обмежений часом. Ограничений часом маркер доступу також буде недійсним, коли користувач вийде з Facebook. Якщо програма отримала дозвіл offline_access від користувача, маркер доступу не закінчується. Однак він стає недійсним щоразу, коли користувач змінює свій пароль.

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


3

Натисніть це, щоб обміняти короткий живий маркер доступу на довге життя / не закінчується (сторінки):

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 

1

увійдіть в обліковий запис facebook і відредагуйте налаштування програми (рахунок -> налаштування програми -> додатковий дозвіл програми, яка використовує ваш обліковий запис). зніміть прапорці (Доступ до моїх даних, коли я не використовую програму (offline_access)). Тоді особа видасть новий маркер, коли ви ввійдете в програму.



0

перевірте такі речі, коли ви взаємодієте з facebook graph api.

1) URL-адреса підключення програми повинна бути основою вашої URL-адреси підключення "redirect_uri": - 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. сервер авторизації видасть маркер без частини сеансу. ми не можемо використовувати цей маркер із псевдонімом «я» у графі api. Цей маркер матиме довжину (40), але маркер із частиною сеансу матиме довжину (81). Маркер доступу без частини сеансу працюватиме з деякими випадками

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


0

Я не знаю, коли саме термін дії маркерів закінчується, але вони є, інакше не було б можливості дозволу в режимі офлайн.

У будь-якому випадку, іноді вимагати від користувача дозволу в режимі офлайн - це надлишок. Залежно від ваших потреб, можливо, достатньо, щоб маркер залишався дійсним, доки веб-сайт відкриється в браузері користувача. Для цього може бути більш просте рішення - переробляти користувача періодично за допомогою iframe: facebook auto re-login from cookie php

Працювали для мене ...


0

Це ярмарок через кілька років, але в Facebook Explorer API Explorer є невеликий інформаційний символ поруч із маркером доступу, який дозволяє вам отримати доступ до програми інструмента маркера доступу, а також розширити маркер API на пару місяців. Може бути корисним під час розвитку.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.