Facebook

-- Facebook

Facebook Offline Access Token Güncellemesi ve Yeni Access Token Kullanımı

Facebook son zamanlarda güncellediği kullanım koşulları ile gündeme gelirken, arka planda da kullanıcıları korumaya yönelik bir güncelleme daha yaptı.

Facebook Developer Road Map ta belirttiği gibi 5 Aralıkta 2012 de offlince access kullanımını kaldırdı. Yani bu şu demek sizden facebook ta, sizin profilinize siz olmadan da post gönderebilen, albumlerinize, bilgilerinize ulaşan programcıkların artık bunu yapabilmek için 60 günde bir izin istemek zorunda olması demek.

Eski adıyla offline_access olarak bilinen ve kullanıcıdan bir kere izin aldıktan sonra o programın, ömrü boyu bu izinlerle bilgilerinize ulaşabilmesi seçeneği, facebook un application ayarlarından da kalktı. Yani artık facebook üzerinde yeni program geliştirenlerin bu ayar yerine farklı bir method kullanmaları gerekecek.

 

 

Peki Nasıl Yapacağız ?

Artık 60 günde bir elinizdeki uzun ömürlü tokenı güncellemeniz gerekiyor. Bunun içinde kullanıcının tekrar sizin programı kullanması gerekiyor. Uzun ömürlü token ın süresi uzamıyor. Yani kullanıcı her geldiğinde tekrar başlayatayım diye bir şey yok malesef ancak 60 gün dolunca yenş token geliyor yoksa hep aynı token geriye dönüyor. fb_exchange_token bir alan geldi siz kullanıcı sizin programa geldiğinde almış olduğunuz access_token ı (biz buna artık short access_token) diyoruz bunu facebook oauth serverına tekrar gönderip, uzun ömürlü tokenı alabilirsiniz. Şöyleki ;

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

isteğini yaptığınızda size yeni bir token dönecek bu token 60 gün ömürlü yeni tokenınız olacak.

Peki eski üyelerimizden aldığımız offline token lar?

Onlara 5 aralık itibariyle 60 günlük bir bitiş süresi tayin edildi. Yani eskiden aldığınız bu token lar 60 gün sonunda hata vermeye başlayacak ve yenisini alabilmek için kullanıcıları tekrar programınıza çekmeniz gerekiyor. Short token dediğimiz normal access_token alıp, fb_exchange_token parametresi ile gönderip yeni long token ı alabiliriz.

Sorularınız olursa yorum yazarak veya sosyal medya hesaplarımdan bana ulaştırabilirsiniz.

Erkan Ceran için cevap yaz Vazgeç

Yorumla

Yorum

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

12 Yorum

  1. merhaba, benim aldığım accesss token offline olduğumda kullanılamıyor.
    bir de bunun sona erme tarihini nereden değiştirebiliriz ?

    • Merhaba,
      Access token aldığınızda o zaten 1 saatlik bir token oluyor hatta offline duruma geçildiğinde geçersiz hale geliyor. Bu yüzden extended access token yapmanız gerekiyor. Nasıl yapıldığı bu yazıda mevcut. Elinizdeki access token’ın ise bilgilerini https://developers.facebook.com/tools/explorer adresinden görebilirsiniz. Buraya elinizdeki access token ı yapıştırın ve “Debug” butonuna basın tarihi hakkında bilgi verecektir. Access token ların tarihleri facebook tarafından belirlenir bu yüzden değiştiremezsiniz fakat bu yazıda bahsettiğim extended token yöntemi ile 60 günlük bir token alabilirsiniz. Tabi 60 gün sonra bu token ında geçersiz olacağını bilmek lazım.

  2. Merhaba yaziniz icin tesekkur ederim fakat ben acces tokeni almaya calisinca “”message”: “Invalid OAuth access token.”,” bu sekilde bir hata aliyorum bunun nedeni nedir?

    • Merhaba,

      Kodunuzun token aldığınız kısmını paylaşabilirseniz daha rahat yardımcı olabilirim. Hatanız access tokenı alamadığınız şekilde bunun çeşitli sebepleri olabilir, o anki facebook kullanıcısı facebooka giriş yapmamış olabilir veya token zaman aşımına uğramış olabilir.

  3. kardes olmuyor ya, microsoft olarak aldım “Error validating access token: The session has been invalidated because the user has changed the password.” bu şekilde hata verdi bir gün bile durmuyor hemen bu hata geliyor

    • Merhaba,

      Aldığınız hataya göre kullanıcı şifresini değiştirmiş. Facebook üzerinde şifre değiştirilince bu tarz alınan tüm tokenlar sıfırlanır. Yani kullanıcı, tekrar app i ziyaret etmeli ve yeniden bir token almalısınız.

  4. Gerçekten işe yarar bir makale olmuş.Bu sorunumuzu sayenizde çözdük, anlatıma göre uyguladık ve 1411585024 (in about 2 months) 2 ay, teşekkür eder iyi çalışmalar dilerim.

  5. Makale için çok teşekkür ederim.
    WebHook için expire olmayacak token’a ihtiyacım oldu ve sizin makalenizden yardım alarak aşağıdaki kod bloğunu paylaşıyorum.
    İhtiyacınız olan tek şey bu kod çalıştırmadan önce api sayfanızdan güncel bi token almanız. Sonrasında belli periyotlarla (60 gün geçmeden) son token bilginizi gönderip yeni token alabilirsiniz.

    public class FacebookAccessToken {
    [JsonProperty(PropertyName = “access_token”)]
    public string AccesToken { get; set; }
    [JsonProperty(PropertyName = “token_type”)]
    public string TokenType { get; set; }
    }
    private FacebookAccessToken GetNewAccessToken(string appId, string clientSecret, string oldToken) {
    var apiUrl = “https://graph.facebook.com/oauth/access_token”;
    var url = $”{apiUrl}?client_id={appId}&client_secret={clientSecret}&grant_type=fb_exchange_token&fb_exchange_token={oldToken}”;
    var req = WebRequest.CreateHttp(url);
    var response = req.GetResponse();
    using (Stream dataStream = response.GetResponseStream()) {
    using (StreamReader reader = new StreamReader(dataStream)) {
    string responseFromServer = reader.ReadToEnd();
    var result = JsonConvert.DeserializeObject(responseFromServer);
    return result;
    }
    }
    }