Pertanyaan Bagaimana cara mendeteksi pembagian pengguna yang dibatalkan saat menggunakan fb.ui


Saya menggunakan dokumentasi yang disediakan sini dengan kode berikut. Dialog share muncul dengan benar. Masalahnya adalah saya tidak dapat membedakan antara tindakan "Batal" dan "Posting" yang dilakukan pengguna pada dialog. Saya membayangkan ini akan menjadi bagian dari respons.

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/',
}, function(response){
    if (response && !response.error_code) {
        console.log(response);
    } else {
        alert('Error while posting.');
    }
});

edit: keluaran dari konsol tidak menyediakan cara untuk mengetahui

Cancel - Object {e2e: "{"submit_0":1401181811121}"} 
Post - Object {e2e: "{"submit_0":1401181815112}"} 

5
2018-05-27 08:30


asal


Jawaban:


Saya menguji ini, dan ternyata ada beberapa info di response objek yang dapat Anda gunakan untuk menentukan apakah dialog dibatalkan.

Kode

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/'
}, function(response){
    if (response && !response.error_code) {
        console.log("OK: "+JSON.stringify(response));
    } else {
        console.log("Not OK: "+JSON.stringify(response));
    }
});

Output saat pembatalan:

{error_code: 4201, error_message: "User+canceled+the+Dialog+flow", e2e: "{"submit_0":1401188820613}"} 

Jadi, saya kira Anda bisa memeriksa pembatalan seperti ini:

FB.ui({
    method: 'share',
    href: 'https://developers.facebook.com/docs/'
}, function(response){
    if (response && !response.error_code) {
        console.log("OK: "+JSON.stringify(response));
    } else if (response && response.error_code === 4201) { //Cancelled
        console.log("User cancelled: "+decodeURIComponent(response.error_message));
    } else {
        console.log("Not OK: "+JSON.stringify(response));
    }
});

Sayangnya, FB.Events.subscribe() tidak menawarkan Peristiwa untuk Membatalkan dialog ini: https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/v2.0


4
2018-05-27 08:47



Ini sengaja untuk menghalangi pengembang menggunakan postingan sebagai mekanisme gating. Harusnya terserah orang untuk memilih apakah akan memposting atau tidak, itu tidak harus menjadi persyaratan aplikasi.


2
2018-05-27 17:44



Gunakan "pakan" metode bukannya "berbagi" sehingga tidak memerlukan izin aplikasi untuk mendapatkan respon.

FB.ui({
    method: 'feed',
    caption: 'My Caption',
    link: 'http://www.google.com/'
}, function(response) {
    if (response && response.post_id) {
        alert('Thank you for sharing!');                
    } else {
        alert('You have cancelled the share.');
    }
});

2
2017-09-21 08:48



Saya juga memiliki masalah dengan fungsi respons, saat ini saya sedang mengkodekan dan mencoba menggunakan fb.UI

    return FB.ui({
      method: 'share',
      href: this.shareUrl,
      hashtag: "myHashTag",
      quote: "myQuote"
    }, function(res) {
      console.log("res = ", res);
      console.log("res? = ", res != null);
      return App.vent.trigger("FBShareView:cancelled");
    });

Saya menemukan bahwa pada bagian yang sukses, res adalah array kosong dan res! = Null adalah true

Saya menemukan bahwa untuk skenario pembatalan, res tidak terdefinisi.

Saya berharap untuk melihat res sebagai objek dengan error_message seperti yang dijelaskan di sini: https://developers.facebook.com/docs/sharing/reference/share-dialog

Bisakah Anda memberi tahu saya apa yang mungkin salah, silakan?


1
2018-06-21 11:15