SORU
1 HAZİRAN 2010, Salı


/Java-basit metin duvar Facebook için Post Android?

Benim uygulama içinde bir duvar ilanıyla entegre etmeye çalışıyorum. Ben zaten kullanıcı kendi kullanıcı adı ve parola (şifrelenmiş) tasarruf edebileceği bir alan var. İstiyorum programıma geri çağırma kaydedilmiş kullanıcı adı ve parola geçmek için Facebook kimlik doğrulaması için ve daha sonra izin uygulaması sonrası basit metin (belki bir bağlantı da) için Kullanıcı duvar.

O dedi, okudum her şeyi geliştirici sayfaları Facebook (apı görünüyor tamamen yabancı bana... hiç yapmadığım herhangi bir tür web Uygulama Geliştirme önce... sadece masaüstü uygulamaları) ve tecrübe ile Java kütüphaneleri here ama dürüst olmak gerekirse, ben anlamıyorum her çeşitli uygulamalar. Bazı basit kullanım için olduğunu iddia ediyor, ama görünüşe göre bir şekilde kafamın üzerine çıktı.

Hatta resmi Facebook Android SDK ile uğraşmaya çalıştım, ama o web görünümü arabirimi kullanır ve kullanıcı adı pass ve kolay kimlik doğrulaması için şifre alamıyorum. Artı, hala bile doğru kimlik doğrulama sonra duvara yazı nasıl yapılacağına dair bir bilgim yok.

Yardım lütfen. Teşekkürler.

Oh, btw ben zaten Facebook API anahtarı ve Uygulama KİMLİĞİ var.

[GÜNCELLEME 1]

Daha fazla açıklama için: Eğer http://github.com/facebook/facebook-android-sdk resmi Facebook SDK Android ile aşağıdaki kod parçacığını kullanıyorum eğer ben bir sonraki kullanıcı oturum sonra ne yapmalıyım? Bu benim için açık değil.

Facebook facebookClient = new Facebook();
facebookClient.authorize(this, "[APP ID]", new String[] {"publish_stream", "read_stream", "offline_access"}, this);

"bir DialogListener, ve" [APP ID] "Facebook uygulama kimliğimi. uygulayan bir faaliyettir" bu

Teşekkürler.

[GÜNCELLEME 2]

Bir çözüm buldum (aşağıya bakınız), eksik olan tek şey otomatik doldurma verileri ile giriş metin kutuları yeteneği olmasına rağmen uygulamada saklı. Resmi Facebook Android SDK buna izin vermeyebilir. Ben aramaya devam edeceğim.

CEVAP
2 HAZİRAN 2010, ÇARŞAMBA


Bu, Tom'un yardımı (teşekkür ederim) dedim. Anahtar "stream.bir iletişim yaratıyordu yayımlamak" API çağrısı, Facebook Android SDK kullanarak. İşte adımlar:

  1. Resmi Facebook Android SDK indir : http://github.com/facebook/facebook-android-sdk
  2. Proje Eclipse içine dosyaları almak.
  3. *Proje ihracat.jar dosyası. (bu bir çakışmaya neden) olabilir

    [GÜNCELLEME]

    Facebook son güncellenen kaynak kodu ve simge dosyası benim projeleri ile kaynak kimliği çatışmalar (Android 1.5 ) neden olduğu fark ettim. Benim çözüm bir kavanoz olarak ihraç unutmak. Bunun yerine, Facebook kopyala "" doğrudan uygulama içine klasör "" (yani "com.klasör src com facebook."uygulamanızda bir paket olmalı... kaynak dosyaları) yanında android. Eğer zaten "" "" klasörü, iletişim dosyaların üzerine yazmasını hakkında, kaynak dosyaları yok görünen kutuları yazılmasını herhangi merak etme. src klasörü com varsa Geri Eclipse gidin ve klasörü "ve" com.src yenileme facebook.android" şimdi bir paket olarak listelenmiş olmalıdır. Uygulamanıza dahil Facebook simgelerinden biri "de." klasör ve yenileme drawable kopyasını Gölgede bırakacak şikayetçi "FbDialog.java" Dosya Ekle... sadece bir işaret almak için uygulamanızın "R" dosyaya başlık dosyası (örneğin, uygulamanızın paket adı "com.android.sonra" şunu Ekle: "com alma.uygulamam android.uygulamam.R;"). Eğer bunu yapmak için gerekirse #5'e gidin.

  4. Ekleyin .projenizin için jar dosya yolunu oluşturmak

  5. Örnek kod basitleştirilmiş: aşağıdaki bakın

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import com.facebook.android.*;
import com.facebook.android.Facebook.DialogListener;

public class FacebookActivity extends Activity implements DialogListener,
        OnClickListener
{

    private Facebook facebookClient;
    private LinearLayout facebookButton;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.test);//my layout xml

        facebookButton = (LinearLayout)this.findViewById(R.id.Test_Facebook_Layout);

    }

    @Override
    public void onComplete(Bundle values)
    {

        if (values.isEmpty())
        {
            //"skip" clicked ?
            return;
        }

        // if facebookClient.authorize(...) was successful, this runs
        // this also runs after successful post
        // after posting, "post_id" is added to the values bundle
        // I use that to differentiate between a call from
        // faceBook.authorize(...) and a call from a successful post
        // is there a better way of doing this?
        if (!values.containsKey("post_id"))
        {
            try
            {
                Bundle parameters = new Bundle();
                parameters.putString("message", "this is a test");// the message to post to the wall
                facebookClient.dialog(this, "stream.publish", parameters, this);// "stream.publish" is an API call
            }
            catch (Exception e)
            {
                // TODO: handle exception
                System.out.println(e.getMessage());
            }
        }
    }

    @Override
    public void onError(DialogError e)
    {
        System.out.println("Error: "   e.getMessage());
    }

    @Override
    public void onFacebookError(FacebookError e)
    {
        System.out.println("Error: "   e.getMessage());
    }

    @Override
    public void onCancel()
    {
    }

    @Override
    public void onClick(View v)
    {
        if (v == facebookButton)
        {
            facebookClient = new Facebook();
            // replace APP_API_ID with your own
            facebookClient.authorize(this, APP_API_ID,
                new String[] {"publish_stream", "read_stream", "offline_access"}, this);
        }
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • David Wills

    David Wills

    31 Aralık 2007
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007