2015-05-04 38 views
9

Şu bağlantıyı facebook'ta paylaşmak için şu kodu kullanıyorum. Kullanıcı Share (Paylaş) iletişim arabiriminde iptal üzerine tıkladığında onCancel() yerine onSuccess() geri çağırma yöntemi çağrılır. Ve posta kimliği alınıyor.Lütfen bana neyin yanlış gittiğine yardım et?Android Facebook SDK 4.0.0 Geri arama geri bildirimi düzgün çalışmıyor

ShareButton btn; 
CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this); 
    callbackManager = CallbackManager.Factory.create(); 
    setContentView(R.layout.activity_share); 

    btn = (ShareButton) findViewById(R.id.btn_share); 

    btn.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
     @Override 
     public void onSuccess(Sharer.Result result) { 
      Log.e("Tag","Successfully posted"); 
      Log.e("Post id",result.getPostId()); 
     } 

     @Override 
     public void onCancel() { 

      Log.e("Tag","Canceled by user"); 

     } 

     @Override 
     public void onError(FacebookException error) { 

      Log.e("Tag",error.getLocalizedMessage()); 
     } 
    }); 
    ShareLinkContent content = new ShareLinkContent.Builder() 
      .setContentUrl(Uri.parse("My Custom URL")) 
      .setContentTitle("Test") 
      .build(); 

    btn.setShareContent(content); 

} 

@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 
+0

Aynı sorunları yaşıyorum. Bunu çözebildin mi? – cjserio

+0

Aynı konuyla da ilgileniyorum. – Shankar

+0

Aynı problemim var ve her yerde bir çözüm bulamıyorum. Android için Facebook SDK'da bir hataya benziyor ya da dokümantasyonda bir şey eksik. –

cevap

3

Belki geç kaldım ama aynı sorunu haftalar önce gördüm. Fark ettiğim şey, web tabanlı Paylaşım iletişim kutusundaki İptal düğmesine basarsanız, onSuccess() yöntemi çağrılır, ancak Share.Result nesnesi null postId içeriyordur, bu nedenle, kullanıcının ne zaman tıklattığını veya ne zaman kontrol ederek paylaştığını kontrol edebilirsiniz Share.Result yanıtı.

Fark ettiğim başka bir şey ise, yerel uygulama yüklü içerik paylaşıyorsanız, postId alanı her zaman boştur ... böylece kullanıcının, postId alanını denetlemek için işaretli olup olmadığını denetlemeniz gerekir.

+0

Bir başarı sonrası eylemi tanımlamak için 'PostId' kullanmayı denedim, ancak yerel uygulama yüklendiğinde dediğiniz gibi' PostId' her zaman boştur. Bu senaryoda iptal işlemini tespit etmek için herhangi bir çözüm var mı? – agarwaen

+0

Sadece, kullanıcının bir veya başka bir mantığı yapmak için yüklü Facebook paketine sahip olup olmadığını kontrol edin. – ablanco

+0

Bu çözüm, kullanıcı Facebook native uygulamasına yüklendiğinde başarısız olur ve iletişim kutusunun sol üst tarafındaki geri ok düğmesini tıklatarak paylaşımı iptal eder, bu durumda on-start yeniden denir, postId ile null olur. – NecipAllef