نشر الحالة عندما يقوم المستخدم أولاً بتسجيل الدخول مع Facebook
-
26-09-2019 - |
سؤال
لقد تمكنت الآن من نشر حالة نشر عند النقر على رابط. أود الآن أن يتم نشر الحالة عند تسجيل الدخول لأول مرة مع Facebook وقبول الأذونات.
الرجاء المساعدة! أنا أستخدم هذا الرمز لزر تسجيل الدخول:
<fb:login-button ></fb:login-button>
كن محددًا معي أنا جديد على Facebook Connect.
المحلول
نظرًا لأنك تمكنت من مصادقة مستخدم ونشره من رابط ، فإن الأمور ستكون سهلة ، فقط على auth.login
حدث استدعاء طريقة النشر الخاصة بك ، شيء من هذا القبيل سيفعل:
window.fbAsyncInit = function() {
FB.init({appId: '<?php echo $this->facebook->getAppId(); ?>', status: true, cookie: true,
xfbml: true});
FB.Event.subscribe('auth.login', function() {
postStatus();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
function postStatus(){
var body = 'Reading Connect JS documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
}
نتيجة:
تعديل:
تأكد أيضًا من أن لديك الأذونات المناسبة في قضيتك publish_stream
:
<fb:login-button perms="read_stream,publish_stream"></fb:login-button>
نصائح أخرى
فقط قم بتعديل هذا الرمز
<div id="fb-root"></div>
<script type="text/javascript">
var uid;
window.fbAsyncInit = function() {
FB.init({appId: 'APP_ID', status: true, cookie: true, xfbml: false});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
window.fbAsyncInit = function() {
FB.init({appId: 'APP_ID', status: true, cookie: true, xfbml: true});
/* All the events registered */
FB.Event.subscribe('auth.login', function(response) {
// do something with response
login();
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
logout();
});
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
login();
}
});
};
function graphStreamPublish(){
var body = document.getElementById("txtTextToPublish").value;
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
}
function fqlQuery(){
FB.api('/me', function(response) {
var query = FB.Data.query('select name,email,hometown_location, sex, pic_square from user where uid={0}', response.id);
query.wait(function(rows) {
uid = rows[0].uid;
document.getElementById('name').innerHTML =
'Your name: ' + rows[0].name + "<br />" +
'Your email: ' + rows[0].email + "<br />" +
'Your hometown_location: ' + rows[0].hometown_location + "<br />" +
'Your sex: ' + rows[0].sex + "<br />" +
'Your uid: ' + rows[0].uid + "<br />" +
'<img src="' + rows[0].pic_square + '" alt="" />' + "<br />"
'<fb:multi-friend-selector actiontext="Select the friends you want to invite. (All of them.)" rows="3"/>';
});
});
}
function getFriends(){
var theword = '/me/friends';
var params = new Array(uid);
FB.api(theword,params, function(response) {
var divInfo = document.getElementById("divInfo");
var friends = response.data;
divInfo.innerHTML += '<h1 id="header">Friends</h1><ul id="list">';
for (var i = 0; i < friends.length; i++) {
divInfo.innerHTML += friends[i].id+" "+friends[i].name+"<img src=https://graph.facebook.com/"+friends[i].id+"/picture/>";
// divInfo.innerHTML+= '<fb:name useyou=false uid=100001248074891 firstnameonly=true></fb:name>';//'<fb:name useyou=false uid='+friends[i].id+' firstnameonly=true></fb:name>';
}
});
}
function share(){
var share = {
method: 'stream.share',
u: document.getElementById('txtShare').value
};
FB.ui(share, function(response) { console.log(response); });
}
</script>
<fb:login-button
autologoutlink="true"
perms="email,user_birthday,status_update,publish_stream"></fb:login-button>
لا تنتمي إلى StackOverflow