Son Tweet:
Son Tweet Yükleniyor..
Yıl 2020 oldu hala Internet Explorer 6 kullanıyosun! Bir sürü güvenlik açığı var. Sonra görsel grafiklerden seni mahrum bırakıyo. Ne gerek var ! Hemen Yeni Bi Tarayıcı Bul !.
X
Yazı

Facebook Uygulama Geliştirme: İzin Alma ve Duvara Yazma

Facebook Uygulama Geliştirme başlığı altında bir yazı dizisine başlamış ve yeni uygulama oluşturma alt başlıklı bir yazı yazmıştım.İkinci yazımı yazmadan facebook, php-sdk'sını güncelleştirdi. Dolayısıyla yeni sistem ile anlatmak için bu yazıda biraz gecikti.

Yeni sdk kullanımı kolaylaştırmaya yönelik güncellemeleri içeriyor. Mesela bizim oluşturmamız gereken login ve logout url değerlerini artık kendisi oluşturuyor. Bu yazıda daha önce oluşturduğumuz uygulama ve facebook php-sdk yı kullanarak kullanıcıdan izin alıp, duvarına yazacağız.


Yazı güncellendi. Güncel hali için tıklayınız.

Öncelikle ihtiyacımız olan Facebook sistem dosyalarını github üzerinden indiriyoruz. İhtiyacımız olan aşağıda görülen 3 dosya.

Ardından php kodlarımızı yazmaya başlıyoruz. Php kodlarının içerisine ayrıntılarını yazarak devam edeyim:

not:aşağıdaki kodları kopyalamayın, en alttaki uygulama dosyalarını indirerek kullanın.




Uygulamanın çalışır halini görmek için tıklayın.

Uygulama dosyalarını indirmek için tıklayın.

Temek hatlarıyla bir uygulama oluşturmuş olduk. İlerleyen zamanlarda daha gelişmiş uygulamalar oluşturmayı anlatacağım. Kolay gelsin.

40 kişi yorum yapmış:

  • uygulamaya girince yapılan auto-post ile ilgili bilgi verir misiniz?

    Batı

    23 haziran 2011, 22:31

  • Şu an daha stabil kodlar yazmak için araştırıyorum. Offline olarak duvara yazma konusunu yazacağım. Bu yazıyla bir içerik gösterildiğinde şu kişi şu içeriği gösteriyor diye duvarına yazabilirsiniz.

    Sezer

    25 haziran 2011, 0:38

  • http://apps.facebook.com/genelkulturumuz/ Adresinde Sizin Bu Kodları Kullandım . kullanıcağımız uygulama değişkenlerini atıyoruz dediğimiz yerdeki değişiklikleri yaptm. Ama Sürekli Bir şeyler Değişiyor Ve Php Dosyalarını Attığım Yerde Error_log dosyasında süreklii şu yazı artıyo [Tarih] Bad Signed JSON signature! ne yapmam gerek ? msn ile ulaşırsanız sevnrm :)

    Mertcan

    27 haziran 2011, 14:31

  • Bir hata oluştu, lütfen daha sonra tekrar dene. böyle bir hata veriyor. api id ve api secret değerlerini yazmama rağmen uygulayama giremiyorum. hostuma attım dosyaları. index.php ve facebook dosyası var. eksik mi atıyorum ?

    rüştü

    27 haziran 2011, 18:49

  • @mertcan; sanırım javascript lie yönlendirmede bir problemin var. İzin verdikten sonra sistem sonsuz döngüye gidiyor. Uygulamana erişemedim.

    @rüştü; facebook uygulama oluşturma panelinden fbml'i mi seçiyorsun yoksa iframe'mi? eğer fbml seçili ise hatayı ekrana yazdırmıyor. Iframe seçiliyken ekrana hatayı yazdırması gerek.

    Sezer

    27 haziran 2011, 20:34

  • Bende herşeyi istediğiniz gibi yaptım ama her zaman Bir hata oluştu. Lütfen daha sonra tekrar dene. diyor serin nedir acaba şükrü bey siz nasıl yaptınız ?

    Memet

    13 Şubat 2012, 22:4

  • @Mehmet, hesabın cep telefonuna onaylı olması gerekiyor, ayrıca daha önce uygulama yaptın ve geliştirici bölümüden banlandıysan bu hatayı verebilir. Ama bazen banada veriyor bu hatayı.

    Sezer

    19 Şubat 2012, 13:38

  • Öncelikle Cevap Verdiğin için Teşekkr Ederim :) Şu offline konusunu anlatman şuan benm için çok gerek Kodları İndirdikten Sonra Düzenleme Yaparken Yanlşkla Bir yerde Bir Kodun 1 harfini silmşm oda bu hataya yol açtı tekrar indirdm düzelti :) Offline iken duvara yazma işi şmdi gerek bana :)

    Mertcan

    27 haziran 2011, 20:56

  • @mertcan Aslında offline olarak yazmakta aynı mantık. İznini aldığın üyelerin id'lerini saklarsan bir kenarda; daha sonra yazıdaki $user değerine o id'yi vererek aynı kodu çalıştırırsan olacaktır. Dikkat etmen gereken şey bu işlemi facebook üzerinden değilde kendi sunucun üzerinden yapmalısın.

    Sezer

    27 haziran 2011, 21:13

  • @sezer Abi Ben Onların id sini Nasıl Saklıcam Ve bu işlemi otomatik olarak nasıl yapabilirim belli zaman aralıklarıyla site otomatik duvarlarına yazacak ?

    Mertcan

    27 haziran 2011, 21:16

  • id'leri veritabanında saklayabilir, Cronjob ile otomatik aralıklarla çalıştırabilirsin. Yapman gereken sadece $user değişkenine id vermek. Basit bir uygulama yazıyorum şu an.  En kısa zamanda tamamlayıp paylaşacağım.

    Sezer

    27 haziran 2011, 21:30

  • şuan; Canvas FBML/iframe- iframe, yazıyor.. bunu fbml e nasıl çevirebilirim. bulamadım bir türlü :)

    rüştü

    27 haziran 2011, 21:52

  • uygulamaya izin ver dediğinde adres satırında hata kodu veriyor tamam uygulama açıyor ama o kodun adres satırında olmaması lazım değilmi orda takıldım sanırım izin verilen bilgilerle alakalı bi durum

    erman

    29 haziran 2011, 2:7

  • ben hala yapamadım. kırmızı kutular içinde hata veriyor. :S nerde yanlış yapıyorum acaba. api id , api secret ve basaurl yazmama rağmen...

    rüştü

    29 haziran 2011, 3:18

  • @erman izin verdiğinde ilk olarak yönlendirmede access_token gibi değerleri get ile gönderiyor. Eğer uygulamaya izin verdiysen uygulamaya(burda) tekrar girdiğinde herhangi bir kod görmeyeceksin.

    @rüştü aldığın hatayı yazarsan yardımcı olabilirim. Uygulamayı kullanan kullanıcıları sanırım facebook sunuyor. Onuda kısa zamanda yazacağım.

    Sezer

    29 haziran 2011, 13:27

  • http://i1106.hizliresim.com/2011/6/29/10345.jpg böyle bir hata alıyorum. ben uygulama yaptığım profilde giriyorum. başta izin de istemedi fakat başka bir profilden tıkladığım zaman yukarıdaki hatayı alıyorum.

    rüştü

    29 haziran 2011, 18:45

  • @rüştü O hata sizin uygulama ayarlarınızdan kaynaklı bir hata olmalı. Eğer iframeyi seçtiyseniz kodunuzda bulunan hatayı ekrana yazdırması gerek. Kendi sunucunuzda aynı hatayı veremez zaten, kendi sunucunuzda çalıştırmayı denediniz mi ? hata nedir? (www.sezercik.net/fb_uygulamam.php gibi.)

    Sezer

    30 haziran 2011, 19:2

  • inanılır gibi değil :) önce dediğin gibi (www.sezercik.net/fb_uygulamam.php gibi.) yaptım. sonra apps.facebook/uygulamam üzerinden girdim ve izinleri istedi :) şimdi izinleri aldığımız kişilerin bilgilerini nasıl görücez :)

    rüştü

    30 haziran 2011, 20:23

  • Peki uygulamayı arkadaşlarına öner butonu nasıl yapabilirz bir bilgin varmı acaba ?

    Sahin

    25 Temmuz 2011, 3:41

  • Mustafa; php ile yöntem bulamadım, ama sadece isim yazdırmaktan ibaret ise javascript ile en dış frame'in(top) urlsini kontrol ettirip ona göre ekrana isim yazdırabilirsin.

    Şahin; normal siteye beğen butonu ekler gibi gönder butonu ekleyebilirsin. Şurda ayrıntılı bilgi var. Daha gelişmiş bir şey istersen javascript sdk ile facebook tarzı bir kutu ile davet gönderimi yapabilirsin.

    Sezer

    25 Temmuz 2011, 23:57

  • cvbın için tşkederim ben uygulamayı yaptım sayfa öner uygulamasını reguest_ids numarasını ve pageid numarasını veri tabanına kayıt etmem gerekiyor reguest_ids i sayfayı önerinde veri tabanına kayıt ediyor numarayı fakat pageid i alamıyorum bu konuda bir bilgin varmı acaba page idi almak içn bunu kullanıyorum ama olmuyor pageid i almak için bunu kullanıyorum ``kaydet.php?<?=$pageid?>`` ama hatayı nerde yapıyorum pageid değişkenini mi ynalış yazıyorum acaba

    Şahin

    1 Ağustos 2011, 17:20

  • sayfa öner uygulamasını javascript sdk yı kullanarak yaptınız sanırım. pageid yi de gönderirken kaydet.php?pageid=<?= pageid ; ?> şeklinde almanız gerekir.

    Kolay gelsin.

    Sezer

    1 Ağustos 2011, 21:42

  • denedim ama yine olmadı ya ben öneri kısmındaki kodu veriyim ona bi bakın isterseniz <script type=``text/javascript``> function invite(){ FB.ui({method: `apprequests`, message: `Arkadaşın Seni 10 KİŞİ DAVET ET 100 KEMİK KAZAN Sayfasına Davet Ediyor`, data: `tracking information for the user` } , function (response) { if (response && response.request_ids) { $.each(response.request_ids, function(key,value) { $.post(``kaydet.php?pageid=<?= pageid ; ?>``, { request_ids: value } ); }); alert(`Davetler Basariyla Gonderildi...`); } else { alert(`Davet Gonderiminde Facebook`tan Kaynaklanan Bir Hata Olustu Lutfen Tekrar Deneyin..`); } }) } </script> pageid i burdan alması gerekiyor ama ne yaptıysam olmaı ya

    Şahin

    1 Ağustos 2011, 21:56

  • daha önceki php  kodlarındada pageid olarak ne tanımladınız? birde yazdıgınız js kodu hakkında pek bilgim yok sadece js olara bakabiliyorum. facebook'un fbjs'sini henüz kurcalamış değilim. (uzun kodları su siteye yapısıtıp linki atarsanız daha acık olur.)

    Sezer

    1 Ağustos 2011, 22:20

  • buyrun yapıştırdım kodu http://paste2.org/p/1556621 burdan bakabilrisiniz bu index sayfası

    Şahin

    1 Ağustos 2011, 22:24

  • bu arada yazmayı unutmuşum pageid i de aynen pageid olarak tanımladım ve kayket.php kaydettikten sonra böyle olması gerek kaydet.php?pageid=144688325603976

    Şahin

    1 Ağustos 2011, 22:29

  • açıkcası $.post("kaydet.php?pageid= kısmında tam olarak ne  yapmaya calıstıgınızı anlamadım. Kullanıcı seçildiyse response ve response.request_ids degerlerini alıyor. Alınca kaydet.php ye mi göndereceksiniz? pageid dediğiniz deger neyin hangi sayfanın pageidsi?

    Sezer

    1 Ağustos 2011, 22:32

  • reguest_ids i kayıt edip önerilen kişi bildirime tıklayınca http://apps.facebook.com/asdsasadds/?request_ids=226771720700116&ref=notif bu şekilde sayfa açılıyor reguest_idse göre hangi sayfadan önerildiyse o sayfanın page idsini de kaydedip http://apps.facebook.com/asdsasadds/?request_ids=226771720700116&ref=notif burası açıldığında o sayfa idini beğen butonu olarak gösteriyor anlatamadım ama umarım anlamışsındır yani pageid dediğim yer hangi sayfadan önerildiyse o sayfasını pageidsi

    Şahin

    1 Ağustos 2011, 22:36

  • istediğiniz şeyi manuel olarak yapmak gerek. Kodlarınıza <script>alert( document.referrer);</script> kodunu yapıstırın. Eger her bir farklı sayfanız için o sayfanın url sini veriyor ise, ki verecektir, bu document.referrer kodunu javascript ile parcalayarak idyi alıp direk javascript ile gönderebilrsiniz.

    Umarım yardımcı olabilmişimdir.

    Sezer

    1 Ağustos 2011, 22:59

  • msn ekleyemezmisiniz dediğniz yeri anlamadım başka bir yönetmi varsa yardım edermisiniz lütfen bu benim için çok önemli

    Şahin

    1 Ağustos 2011, 23:12

  • peki siz böyle bi uygulama yapaamzmsınız

    Şahin

    1 Ağustos 2011, 23:57

  • Msn ekledim, ancak msn için fırsat bulacağımı sanmıyorum. 

    Benim bildiğim fan sayfası içinde gösterilen uygumada hangi fan sayfasında olduğu bilgisi alınamıyor.   Bir önceki mesajımda da manuel olarak demek istediğim buydu.

    Şöyle bir fikir atıyım ortaya, her sayfanız için farklı bir uygulama oluştursanız, hepsini sunucunuzda ayrı ayrı sayfalara atasanız istediğiniz gibi olacağını düşünüyorum. aynı sunucuda oldugundan bu çalışma dosyaları arasında iletişimde kurabilirsiniz. 

    Tabi bu sizin php ve js bilginize bağlı.

    Sezer

    2 Ağustos 2011, 12:50

  • ya bunu yapan iki kişi var biri benim gibi veri tabanına kayıt ederek yapıyor diğeri kayıt etmeden direk olarak sizin dediğiniz gibi her sayfaya ayrı çıkartıyor yani böyle birşey yapılmış ve kullanılıyorda ama ben kendim yapmak istedim ayrıca msn için tşkederim kabulettim isteğinizi.

    Şahin

    7 Ağustos 2011, 12:48

  • @melisa; sanırım sorun hesabınızla ilgili. Facebook'un kendi sayfası açılmıyorsa facebook'a mail atmanızı öneririm. Hesabınıza herhangi bir engelleme konulmuş olabilir.

    @özcan; hafta içerisinde mail ile ulaşacağım.

    Sezer

    7 Ağustos 2011, 21:41

  • Anlatımınız İçin Teşekkürler Ben Uygulamalar Yaptım Ve Uygulamalarda Duvara Yazma Yetkiside Aldım anCAK O Kişilere bir panel gibi nasıl ulaşacağım veya o kişilere nasıl duvarlarına post tacağım ?

    erkin

    14 Ağustos 2011, 0:52

  • Allah razı olsun kaç gündür uğraştım yapmak için ama nafile ingilizce yok :))

    Abdulkadir

    18 Ağustos 2011, 16:52

  • @erkin googlede jpost v2 diye ara ama o satışlı tabi... ama bana bu kadarı fazla dersen amatör bişe olsun dersen giren $user değişkenlerini mysql e at sonra http://www.sezercik.net/oku/facebook-uygulama-gelistirme-izin-alma-ve-duvara-yazma-2.html bu konudakini while döngüsüyle o idleri çekecek şekilde ayarla ben böyle atmayı başardım ama hostun zaman aşımına uğraama riski çok yüksek tabi dandikse :D

    Mert Can

    19 Ağustos 2011, 12:50

  • @mert can o dediğin mysqlê atma ve while döngüsüyle post etmeyi detaylı bi şekilde açıklar mısın?

    rüştü

    3 Eylül 2011, 18:43

  • Bak şimdi @rüştü Sezer Abinin yazdıklarında $user hep id ye eşit oluyor.. geriside $user i mysql e yazdırmakta kalıyor.. mysql yazdırma her yerde bulabileceğin basit bir kod :D duvara post atma olayına gelince bende daha onu nasıl yaptıımı anlamş değilim :)

    MertCan

    12 Eylül 2011, 13:58

  • php ile title yani başlık alanını div içinde veya yazı arasında göstermemiiz mümkün mü bir bilgin varmı acaba ?

    Şahin

    20 Eylül 2011, 15:11

  • @rüştü, mantık mertcan'ın dediği ile aynı. Gerisi senin php bilginize kalmış.
    @şahin demek istediğinizi anlamadım, nerden title bilgisi alacaksınız, facebook'la alakası nedir?

    Sezer

    22 Eylül 2011, 21:34

  • sayfalara giirince title alanınba sayfanın ismi yazıyor bende söyle bişey düşündüm uygulamanı içine metin arasına title kodunu çekersem her girilen sayfa için sayfanın ismi yazıcak metin arasında

    Şahin

    22 Eylül 2011, 23:29

E-mail adresinde Gravatar aktif.<b>,<i> HTML etiketlerini kullanabilirsin. Linklerde otomatik aktif edilecektir.

name*

email*

website

Gönder Gitsin