Facebook Yeni Arkadaş Daveti

 bcakir
 8 Ekim 2011

Merhaba arkadaşlar facebook uygulama yapma makalesiyle tekrar buluştuk. Sizden gelen sorulardan bir tanesi üzerine bu uygulamayı yapıyorum. Uygulamamız arkadaş davet etme ilgili olacak. Önceki yazıda bu konuyu anlatmıştım fakat eskisinde herkese uygulama daveti gönderiyorduk. Bu uygulamada ise sadece uygulamayı kabul etmeyen arkadaşlara istek gönderebileceğiz. Yani uygulamayı kabul etmiş olanlar davet istek listesinde görünmeyecek. Yapacağımız bu uygulamada da facebook başlangıç yazısıyla oluşturduğumuz izinler.php betiğine ihtiyacımız olacağı için, yazımızın sonunda uygulamanın çalışır halini yine sizlere vereceğim. Uygulamamız iki bölümden oluşacak. İlk bölümde uygulamayı kabul etmiş arkadaşlarımızı alacağız. İkinci bölümde ise davet etme işlemini ve bu listeden uygulamayı daha önce kabul etmiş kişileri çıkarmayı yapacağız. Şimdi uygulamamızın ilk bölümü yapmaya başlayalım.

<?php
include("izinler.php");
$uids='';
$fql='SELECT uid, name FROM user WHERE uid IN
(SELECT uid2 FROM friend WHERE uid1=me()) AND is_app_user=1';
$params=array(
    'method'=>'fql.query',
    'query'=>$fql
);
$result=$facebook->api($params);
foreach($result as $friend){
    if($uids==""){
        $uids=$friend['uid'];
    }else{
        $uids=$uids.','.$friend['uid'];
    }
}
?>

Yukarıda uygulama iznimizi aldık, daha sonra da FQL ile uygulamamızı önceden kabul eden arkadaşlarımızı seçtik ve bunları uygun düzene getirdik. Uygulamamızı tek sayfada yapıyoruz. Uygulamanın doğru çalışması için sayfamıza ilk önce Php daha sonra da JavaScript kodlarını sayfaya yerleştireceğiz. Uygulamamızın ilk bölümü bittiğine göre şimdi de JavaScript ile uygulama davet etme işlemini yapalım.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JavaScript API ile Yeni Arkadaş Davet Uygulaması</title>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId:'<?php echo $fbconfig['appid']; ?>',
    cookie:true,
    status:true,
    xfbml:true
});

function newInvite(){
    var receiverUserIds = FB.ui({
        method :     'apprequests',
        message:     'Uygulamamı ziyaret et',
        exclude_ids: "<?php echo $uids; ?>"
    });
}
</script>
</head>
<body>
<div><a href="#" onclick="newInvite(); return false;">Arkadaş Davet Et</a></div>
</body>
</html>

Uygulamamızın ikinci kısımda ise uygulama davet işlemini JavaScript SDK’ya göre yaptık ve bu davet listesinden exculude_ids ile uygulamayı önceden kabul etmiş olan kişileri çıkardık. Böylece uygulamamız burada bitmiş oldu. Uygulamanın çalışır halini buradan indirebilirsiniz. Yararlı bir uygulama olması dileğiyle.

 2.197 Okunma

Bu yazıya 28 yorum yapılmış.

  1. emeğine sağlık, çok iyi bir yazı paylaşmışsınız

  2. arkadaş listesinden çıkardım kabul edenleri sayende. bende bunu arıyordum 😀

  3. Öncelikle Paylaşımların ve bilgilendirici yazıların için çok teşekkürler tüm yazılarını dikkatle okuyorum. Benim sana bir sorum dahada doğrusu yardım talebim olacak aslında facebook uygulamalarıyla aram çok çok iyi değil fakat bir proje için bir uygulamaya ihtiyaç var kısaca özetlemek gerekirse aslında bu uygulamana bazı ilavelere ihtiyacımız var. Şöyle söyleyim facebook sayfamıza her ay enfazla kişi getirip beğenmesini sağlayan ilk 10 kişiye çeşitli hediyeler dağıtılacak. Bunun içinde davetten sonra yönlendirilecek olan sayfada davet yapanların puan durumlarını ve sıralamayı göstermemiz gerekmekte (yani o kişinin davetiyle kaç kişi sayfayı beğendi ve tabiki bunun sıralaması) bu konu hakkında yardıma ihtiyacım var

    • bu konu hakkında yazı yazmıştım. yazıyı ve altında yapılan yorumları dikkatle okursan bu istediğini rahatlıkla yapabilirsin. Yazıya buradan ulaşabilirsin. Ayrıca buradaki yorumları da oku.

  4. S.a bir konuda yardım isticektim facebook ta kullanıcağım için buraya yazıyım dedim iframe dışındaki linki nasıl alabilirim yada bir butonu içinde ekranda gösterebilirim yani o anki sayfanın linkini almak istiyorum fakat iframe dışına çıkamıyorum hostun adresini veriyor window.top.location.href kullanıyorum almak için facebook izin vermiyor yardım edersen çok sevinirim şimdiden tşkler.

    • malesef facebook uygulamaları iframe olarak çalıştırıldığı yani kendi serverından kaynağını aldığı için facebook url adresini alamazsın diye biliyorum ama istersen kendi server adresini alıp facebook adresini tahmin edersin. Kısacası serverında davet sayfasındaysa facebookda da davet sayfasındadır gibi. Eğer url adresinin devamında bir parametreyi alacaksan mesala index.php?sayfa=23 gibi bunu $_GET[‘sayfa’] parametresiyle alabilirsin.

  5. ben sayfa öner uygulaması oluşturdumda request_ids numarasına o önerilen sayfanın linkini atıyorum öriye tıklayan kişi o request_ids ile geldiği zaman otomatik olarak onun önerdiği sayfaya yönlendirdim ama şuan linki elle yazdırıyorum bunu otomatik yapmak istedim paki sence farklı bir yolu olabilirmi önerirken sayfanın idini aldırabilirmiyim o şekildede açtırabilriim aslında ama nasıl aldırıcağım konusunda bir bilgim yok

    • yazdıklarını çok iyi anlayamadım bu yüzden iyi bir cevap veremeyebilirim. sayfanın id değerini içeren bir parametre vardır kesin. örneğin yukarıda yazdığım gibi (index.php?sayfa=23) bu sayfanın id değerini yani hangi sayfada olduğunu verir. Eğer bu değeri veritabanına kimin önerdiğiyle birlikte kaydedersen, biri öneriyle gelince de veritabanından aratarak öneri sayfasına kolayca yönlendirebilirsin çünkü sayfa id değeri sende kayıtlı zaten.

  6. o zaman tam olarak istediğimde buydu kişinin hangi sayfada oluduğunuda almak request_ids ile birlikte böylelikle o idle gelince onun sayfasına yönlendirebilirim verdiğin kodu denicem uğraşıcam biraz yapabilirim inşallah çok teşekkürederim

  7. $.post(“kaydet.php? ?$pageid? “, { request_ids: value } );
    bunu kullanıyorum olmuyor nerde yanlış yapıyorum acaba ?
    özür dilerim spam oluyor ama gönderince kodlar siliniyor tekrar gönderiyorum

    • gönderilen parametrenin aşağıdaki düzen içerisinde olması lazım.
      $.post(“kaydet.php?sayfa=23&request_ids=221343232&adi=sahin”) gibi
      bunların her birini ayrı ayrı $_POST[‘sayfa’] şeklinde alabilirsin

  8. $.post(“kaydet.php?sayfa=23&request_ids=221343232&adi=sahin”)

    ama bunu kullanınca sayfa sabit kalıcak sayfa=23 şeklinde artık çok yoruldum son çare olarak sana sormak istedim yardımların için çok tşkederim ama o dediğim kısmı anlamadım

    • ben sadece dizilimi gösterdim eğer sen sayfa id değerini değişkene atarsan o zaman sayfa sabit kalmaz. hangi sayfadaysan o bilgiyi gönderirsin. Örnek;
      $.post(“kaydet.php?sayfa=$sayfa&request_ids=$r_id&adi=$ad”) gibi

  9. şimdi şöyle anlatıyım ben bu kodu denemiştim olmamıştı yine denedim yine olmadı

    $.post(“kaydet.php?pageid=$pageid”), { request_ids: value } );

    bu şekilde önerince veri tabanına $pageid bu yazıyı kayıt ediyor değişken olarak görmüyo normal bi yazı gibi görüyor ikincisi ben bu verdiğim kodla request_ids i alıyorum zaten bana sadece page id lazım

    • gönderme işlemini javascript ile yapıyorsun. eğer page id değerini php ile aldın ve bu değişkenin içinde bilgi varsa, aşağıdaki gibi post edebilirsin
      (“kaydet.php?pageid=< ?php echo $pageid; ?>“)

  10. yine olmadı ya bu kezde php echo $pageid böyle geliyo veri tabananına açılış kapanış takglari ile birlikte burda yazınca gözüküyo o yüzden yazmadım

  11. gönderdim index sayfasını

    • php tagları sorunundan dolayı image olarak atıyorum sana doğrusunu (=< ?php arasında boşluk olmamalı) ama bu da işe yaramaz çünkü $pageid değişkenin boş senin. buna değer vermemişsin göndermek için. ilk önce sayfa değerini alıp bu değişkene atmalı sonra gönderme işlemi yapmalısın. Doğru şekli image

  12. evet çalışmıyor o şekilde de peki değer nasıl verebilirim yardımcı olabilirmisin

    • yaptığın uygulamayı tam bilmediğim için kesin birşey diyemem fakat almak istediğin sayfanın id değeri. sayfaları bir incele onların farklı olmasını sağlayan bir değer olmalı Örneğin; index.php=?sayfa=23 veya index.php=?s_id=255 gibi. bu parametre ne ise onu bulup alman lazım. alınma şekli $_GET[‘s_id’] gibi. Yapman gereken tek şey bu parametreyi php içerisinde $pageid değişkenine eşitlemek. Örneğin; $pageid=$_GET[‘s_id’]; benden bu kadar sana kolay gelsin.

  13. yani benim yapmam gereken sadece kaydet php ye örneğin sayfanın parametresi page_ids ise ben kaydet php ye $pageid=$_GET[‘page_ids’] bunu yazmam yeterli dimi

    • evet dediğin gibi olur. echo komutunun olduğu yerde echo $_GET[‘page_id’]; yaz yeter bile.

  14. tamam çok teşekkürederim yardımların için sayfanın parametresini bulurum inşallah tekrardan teşekkürederim ilgilendiğin için

  15. oo zaman daha iyi öyle yaparım o zaman çok teşekkür ederim

  16. Merhaba, Facebook için bir uygulama yazdım ve uygulamam üzerinden Javascript ile arkadaş daveti gönderiyorum. Davetiye gönderdiğim arkadaşım uygulamamda aynı zamanda tester. Fakat davetiye üzerinden KABUL etdip uygulamanın ana sayfasına girmesine rağmen status == “not_authorized” bilgisi alıyorum. Uygulamanın ADMIN i olan kendi hesabım dışında diğer kullanıcılar ve tester lar dahil davetimi kabul edip status == connected olarak alamıyorum.

    Bu konu hakkında yardımcı olurmusun?

    • Ne yapmaya çalıştığınızı tam olarak anlayamadım. Bir de tester nedir bilmiyorum?

      • Facebook uygulamasının geliştiricisi benim, uygulamama developer facebook apps ROLES tabından TESTERS lar ekledim. bu kullanıcılara uygulamama erişme yetkisi verdim. Fakat bu facebook kullanıcıları “publish_actions”, “email”, “user_status” bilgilerini uygulama ile paylaşmayı kabul etmelerine rağmen facebook javascript FB.getLoginStatus metodu response.status == ‘not_authorized’ olarak geliyor. Fakat kendi hesabımdan FB.getLoginStatus metodu response.status == ‘connected’ olarak alıyor ve bir sıkıntı yaşamıyorum.

        neden response.status == ‘not_authorized’ alıyorum ve uygulamayı public e açtığımda aynı hatayı alırmıyım.

        ilginiz için şimdiden teşekkürler

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Facebook, JavaScript, Php
Kapat