Я граю разом з авторизацією Oauth 2.0 у Facebook і мені цікаво, чи закінчується термін дії маркерів доступу до Facebook. Якщо так, чи є спосіб подати запит на доступний маркер доступу до довгого життя?
Я граю разом з авторизацією Oauth 2.0 у Facebook і мені цікаво, чи закінчується термін дії маркерів доступу до Facebook. Якщо так, чи є спосіб подати запит на доступний маркер доступу до довгого життя?
Відповіді:
Покопавши трохи, я знайшов це. Здається, відповідь:
Оновлено (11 квітня / 2018)
Оголошення про зміну у 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/
Спробуйте це, можливо, це допоможе вам повноцінно
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 ..
Зауважте, що Facebook тепер анулює дозвіл offline_access на користь жетонів, для яких ви можете подати запит на "оновлення" до закінчення терміну дії. Я зараз саме цим займаюся, тому мені більше нічого сказати, але цей документ може допомогти:
https://developers.facebook.com/docs/offline-access-deprecation/
Я прийшов сюди з тим же питанням, що і до ОП, але відповіді, які пропонують використовувати offline_access, викликають для мене червоні прапори.
Безпечний доступ в автономному режимі до облікового запису Facebook на якість відрізняється і набагато потужніше, ніж просто використання Facebook для єдиного входу, і його не слід використовувати легко (якщо вам це справді не потрібно). Коли користувач надає цей дозвіл, "програма" може перевірити обліковий запис користувача з будь-якого місця в будь-який час. Я додаю "додаток" у лапки, тому що це фактично будь-який інструмент, який має повноваження - ви могли скласти цілий набір інструментів, що не мають нічого спільного з веб-сервером, який може отримати доступ до будь-якої інформації, яку користувач погодився поділитися з ними повноваження.
Я б не використовував цю функцію, щоб подолати короткий термін життя; це не за призначенням. Дійсно, саме життя маркера є функцією безпеки. Я все ще шукаю деталі щодо правильного використання цих жетонів (чи можу я їх зберігати? Як / чи потрібно їх захистити? Чи Facebook вбудовує OAuth 2.0 "оновити маркер" у основний? Якщо ні, де це і / або як оновити?), але я впевнений, що offline_access - це не правильний шлях.
Так, вони закінчуються. Існує значення "закінчується", яке передається разом із "access_token", і, як я можу сказати, воно займає приблизно 2 години. Я шукав, але не бачу способу вимагати більш тривалого терміну дії.
оскільки у мене була така ж проблема - дивіться чудовий пост на цю тему від Бен Біддінгтона, який уточнив усі ці проблеми неправильним маркером і правильним типом для надсилання запитів.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Ви завжди можете оновити маркер доступу користувача щоразу, коли користувач заходить на ваш сайт через facebook. Офлайн-доступ не може гарантувати отримання довічного маркера доступу, маркер доступу змінюється щоразу, коли користувач відкликає вам доступ до програми або користувач змінює свій пароль.
Цитується з facebook http://developers.facebook.com/docs/authentication/
Примітка: Якщо програма не вимагає дозволу offline_access, маркер доступу обмежений часом. Ограничений часом маркер доступу також буде недійсним, коли користувач вийде з Facebook. Якщо програма отримала дозвіл offline_access від користувача, маркер доступу не закінчується. Однак він стає недійсним щоразу, коли користувач змінює свій пароль.
Припустимо, що ви зберігаєте фейсбук uid користувача та маркер доступу у таблиці користувачів у вашій базі даних, кожного разу, коли користувач натискає кнопку "Увійти через facebook", ви перевіряєте статус входу за допомогою API Javascript facebook, а потім вивчаєте стан з'єднання з відповіді. , якщо користувач підключився до вашого сайту, ви можете оновити маркер доступу в таблиці.
увійдіть в обліковий запис facebook і відредагуйте налаштування програми (рахунок -> налаштування програми -> додатковий дозвіл програми, яка використовує ваш обліковий запис). зніміть прапорці (Доступ до моїх даних, коли я не використовую програму (offline_access)). Тоді особа видасть новий маркер, коли ви ввійдете в програму.
Базовий маркер 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}
перевірте такі речі, коли ви взаємодієте з 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" буде працювати лише з маркером з частиною сеансу.
Я не знаю, коли саме термін дії маркерів закінчується, але вони є, інакше не було б можливості дозволу в режимі офлайн.
У будь-якому випадку, іноді вимагати від користувача дозволу в режимі офлайн - це надлишок. Залежно від ваших потреб, можливо, достатньо, щоб маркер залишався дійсним, доки веб-сайт відкриється в браузері користувача. Для цього може бути більш просте рішення - переробляти користувача періодично за допомогою iframe: facebook auto re-login from cookie php
Працювали для мене ...
Це ярмарок через кілька років, але в Facebook Explorer API Explorer є невеликий інформаційний символ поруч із маркером доступу, який дозволяє вам отримати доступ до програми інструмента маркера доступу, а також розширити маркер API на пару місяців. Може бути корисним під час розвитку.