Facebook'ta Oauth 2.0 yetkilendirmesi ile oynuyorum ve Facebook'un geçtiği erişim belirteçlerinin süresinin dolup dolmadığını merak ediyordum. Öyleyse, uzun ömürlü bir erişim belirteci istemenin bir yolu var mı?
Facebook'ta Oauth 2.0 yetkilendirmesi ile oynuyorum ve Facebook'un geçtiği erişim belirteçlerinin süresinin dolup dolmadığını merak ediyordum. Öyleyse, uzun ömürlü bir erişim belirteci istemenin bir yolu var mı?
Yanıtlar:
Biraz araştırma yaptıktan sonra bunu buldum. Cevap gibi görünüyor:
Güncelleme (11 / Nisan / 2018)
Facebook değişim duyurusu (10/04/2018)
Facebook güncellenmiş belirteç süre sonu sayfası (10/04/2018)
offline_access: Uygulamanızın herhangi bir zamanda kullanıcı adına yetkili talepler gerçekleştirmesini sağlar. Varsayılan olarak, çoğu erişim belirteci, uygulamaların yalnızca uygulamayı aktif olarak kullanırken kullanıcı adına istekte bulunmasını sağlamak için kısa bir süre sonra sona erer. Bu izin, OAuth uç noktamız tarafından döndürülen erişim jetonunun uzun ömürlü olmasını sağlar.
Bu bir izin değeridir.
http://developers.facebook.com/docs/authentication/permissions
GÜNCELLEME
offline_access izni bir süre önce kaldırıldı.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Bunu deneyin, sizin için tam yardımcı olabilir
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/
Ömür boyu Erişim Jetonu almak için kullanmanız gerekir scope=offline_access
Anlamı scope=offline_access
şudur: -
Uygulamanızın herhangi bir zamanda kullanıcı adına yetkili talepler gerçekleştirmesini sağlar. Varsayılan olarak, çoğu erişim belirteci, uygulamaların yalnızca uygulamayı aktif olarak kullanırken kullanıcı adına istekte bulunmasını sağlamak için kısa bir süre sonra sona erer. Bu izin, OAuth uç noktamız tarafından döndürülen erişim jetonunun uzun ömürlü olmasını sağlar.
Ancak facebook'un gelecekteki yükseltmesine göre offline_acees işlevi 3 Ekim 2012'den itibaren sonsuza kadar kullanımdan kaldırılacak ve kullanıcıya 60 günlük uzun ömürlü erişim belirteci verilecek ve erişim belirtecinin sona ermesinden önce Facebook bunu bildirecek veya özelliğinizi alabilirsiniz. Facebook API'den sona erme değerini getiren bildirim işlevi ..
Facebook'un artık çevrimdışı erişim iznini, son kullanma tarihine "yükseltme" talep edebileceğiniz belirteçler lehine kullanımdan kaldırdığını unutmayın. Şu anda bununla kendim ilgileniyorum, bu yüzden söyleyecek çok şeyim yok, ancak bu belge yardımcı olabilir:
https://developers.facebook.com/docs/offline-access-deprecation/
Buraya OP ile aynı soruyla geldim, ancak offline_access kullanımını öneren cevaplar benim için kırmızı bayrakları yükseltiyor.
Güvenlik açısından, bir kullanıcının Facebook hesabına çevrimdışı erişim elde etmek niteliksel olarak farklıdır ve Facebook'u tek oturum açma için kullanmaktan çok daha güçlüdür ve hafife alınmamalıdır (gerçekten ihtiyacınız olmadıkça). Bir kullanıcı bu izni verdiğinde, "uygulama" kullanıcının hesabını herhangi bir zamanda herhangi bir yerden inceleyebilir. "Uygulamayı" tırnak içine aldım çünkü aslında kimlik bilgilerine sahip herhangi bir araçtır - kullanıcının onlarla paylaşmayı kabul ettiği bilgilere erişebilen, web sunucusuyla hiçbir ilgisi olmayan bütün bir araç setinin komut dosyasını oluşturabilirsiniz. kimlik bilgileri.
Kısa bir belirteç ömrü etrafında çalışmak için bu özelliği kullanmam; amaçlanan amacı bu değil. Aslında, belirteç yaşam süresinin kendisi bir güvenlik özelliğidir. Hala bu belirteçlerin doğru kullanımıyla ilgili ayrıntılar arıyorum (Onları kalıcı hale getirebilir miyim? Bunları nasıl güvenceye almalıyım? Facebook, OAuth 2.0 "yenileme jetonunu" ana simgenin içine yerleştiriyor mu? Değilse, nerede ve / veya nasıl yenileyebilirim?), ancak offline_access'in doğru yol olmadığından oldukça eminim.
Evet, süreleri doluyor. 'Access_token' ile birlikte geçen bir 'expires' değeri var ve söyleyebileceğim kadarıyla yaklaşık 2 saat. Arıyorum, ancak daha uzun bir son kullanma süresi istemenin bir yolunu göremiyorum.
Ben de aynı sorunu yaşadığım için - tüm bu sorunları yanlış belirteç ve istekler için gönderilecek doğru türle açıklığa kavuşturan ben biddington'un bu konuyla ilgili mükemmel gönderisine bakın.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Kullanıcı facebook üzerinden sitenize her giriş yaptığında kullanıcının erişim belirtecini her zaman yenileyebilirsiniz. Çevrimdışı erişim, yaşam boyu erişim belirteci almanızı garanti edemez; erişim belirteci, kullanıcı uygulama erişiminizi iptal ettiğinde veya kullanıcı şifresini değiştirdiğinde değişir.
Facebook'tan alıntı http://developers.facebook.com/docs/authentication/
Not: Uygulama çevrimdışı_ erişim izni istememişse, erişim belirteci zaman sınırlıdır. Zamana bağlı erişim belirteci, kullanıcı Facebook'tan çıkış yaptığında da geçersiz hale gelir. Uygulama, kullanıcıdan offline_access izni almışsa, erişim belirtecinin son kullanma tarihi yoktur. Ancak kullanıcı şifresini her değiştirdiğinde geçersiz hale gelir.
Kullanıcının facebook kullanıcı kimliğini ve erişim belirtecini veritabanınızdaki bir kullanıcılar tablosunda sakladığınızı varsayın, kullanıcı "Facebook ile oturum aç" düğmesine her tıkladığında, facebook Javascript API'sini kullanarak oturum açma durumunu kontrol eder ve ardından yanıttan bağlantı durumunu incelersiniz. , kullanıcı sitenize bağlanmışsa, tablodaki erişim jetonunu güncelleyebilirsiniz.
facebook hesabına giriş yapın ve uygulama ayarlarınızı düzenleyin (hesap -> uygulama ayarı -> hesabınızı kullanan uygulamanın ek izni). iznin işaretini kaldırın (Uygulamayı kullanmadığımda verilerime eriş (offline_access)). Ardından yüz, uygulamaya giriş yaptığınızda yeni bir belirteç düzenleyecektir.
Temel olarak facebook jetonunun süresi yaklaşık bir saat içinde dolar. Ancak, uzun ömürlü bir jeton almak için 'takas' jetonunu kullanabilirsiniz 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 grafik api ile etkileşim kurduğunuzda aşağıdakileri kontrol edin.
1) Uygulama bağlantı URL'si, "redirect_uri" bağlantı URL'nizin temeli olmalıdır: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) "redirect_uri" "her iki durumda da aynı olmalıdır (bir doğrulama kodu ve erişim belirteci talep ettiğinizde) redirect_uri - www.x-minds.org/fb/connect/redirect 3) bir talepte bulunduğunuzda argümanı kodlamalısınız. access_token 4) bir access_token talep ettiğinizde bağımsız değişkeni (type = client_cred) geçmemelidir. yetkilendirme sunucusu, oturum bölümü olmayan bir belirteç düzenleyecektir. bu belirteci grafik api'de "ben" takma adıyla kullanamayız. Bu jetonun uzunluğu (40) olacak, ancak oturum bölümü olan bir jetonun uzunluğu (81) olacaktır. Oturum kısmı olmayan bir erişim belirteci bazı durumlarda çalışacaktır
örneğin: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Ancak "ben" takma adına sahip Grafik API'si yalnızca oturum bölümü içeren belirteçle çalışacaktır.
Jetonların süresinin tam olarak ne zaman sona erdiğini bilmiyorum, ama yaparlar, aksi takdirde çevrimdışı izinler verme seçeneği olmazdı.
Her neyse, bazen kullanıcının çevrimdışı izinler vermesini istemek aşırı bir şeydir. İhtiyaçlarınıza bağlı olarak, web sitesi kullanıcının tarayıcısında açık olduğu sürece jetonun geçerli kalması yeterli olabilir. Bunun için daha basit bir çözüm olabilir - kullanıcıyı periyodik olarak bir iframe kullanarak yeniden günlüğe kaydetme: php tanımlama bilgisinden facebook otomatik yeniden oturum açma
Benim için çalıştı ...
Bu birkaç yıl sonra, ancak Facebook Graph API Explorer artık erişim belirtecinin yanında, erişim belirteci aracı uygulamasına erişmenize ve API belirtecini birkaç ay boyunca genişletmenize olanak tanıyan küçük bir bilgi simgesine sahip. Geliştirme sırasında yardımcı olabilir.