#php #facebook #facebook-page
#php #Facebook #facebook-страница
Вопрос:
Я хочу, чтобы посетители моего сайта размещали сообщения на моей странице поклонников Facebook со страницы моего сайта. Перед публикацией необходимо выполнить аутентификацию пользователя. Как я могу это сделать? В настоящее время я могу размещать сообщения на своей странице поклонников fb только как администратор.
Код, который я использую, приведен ниже.
define("FB_APIKEY", "xxxxxxxx");
define("FB_SECRET", "xxxxxxxx");
$pageid = xxxxxxxxxxxx; //replace it by your desire facebook page id
require_once("src/facebook.php");
require_once("php/facebook.php");
$facebook = new Facebook(array('appId' => "xxxxxxxxxxxxxxxx",'secret' =>"xxxxxxxxxxxxxxxxxxx",));
$user = $facebook->getUser();
$user = (string)$user;
if ($user!="") {
// The user is logged in
try {
$user_profile = $facebook->api("/".$user);
$fb = new Facebook1(FB_APIKEY, FB_SECRET);
$userId = $user;
$targetId = "xxxxxxxxx"; // Page ID of the fan page
$fb->api_client->user = $userId;
$fb->api_client->session_key = $sessionKey;
$fb->api_client->expires = 0;
$fb->set_user($userId, $sessionKey); // set the 'logged in' user
// first, check if this UID is a valid user of this application
$isAppUser = $fb->api_client->users_isAppUser($userId);
// second, check whether this user has set the permission needed
// since my app need these permissions: offline_access, read_stream, publish_stream
$offline_access = $fb->api_client->users_hasAppPermission('offline_access', $userId);
$message="Test message for fabudeal";
// if everything is okay...
if ($offline_access amp;amp; $isAppUser) {
// write to this user's Wall
$fb->api_client->stream_publish($message, $attachment, null, $targetId, $userId);
}
} catch (FacebookApiException $e) {
$user = null;
}
}
Пожалуйста, помогите мне это исправить…..
Ответ №1:
Я нашел решение своей проблемы, используя FB javascript SDK. Код, который я использовал, приведен ниже. Подумал, что кто-то может найти это полезным.
<div id="user-info"></div>
<textarea name="message" id="message" cols="40" rows="5"></textarea>
<p><button id="fb-auth">Submit</button></p>
<script>
window.fbAsyncInit = function() {
FB.init({ appId: 'YOUR APP_ID',
status: true,
cookie: true,
xfbml: true,
oauth: true});
function updateButton(response) {
var button = document.getElementById('fb-auth');
if (response.authResponse) {
//user is already logged in and connected
var userInfo = document.getElementById('user-info');
FB.api('/me', function(response) {
var userInfo = document.getElementById('user-info');
userInfo.innerHTML =
'<img src="https://graph.facebook.com/'
response.id '/picture" style="margin-right:5px"/>'
response.name;
});
button.onclick = function() {
var access_tokn = response.authResponse.access_token;
var msg = document.getElementById('message').value;
var wallPost = {
access_token: access_tokn,
message: msg
};
FB.api('/YOUR_PAGE_ID/feed', 'post', wallPost, function(response) {
if (!response || response.error) {
alert('Error occurred');
} else {
//alert('Success!');
location.reload(true);
}
});
};
} else {
//user is not connected to your app or logged out
button.innerHTML = 'Submit';
button.onclick = function() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
var userInfo = document.getElementById('user-info');
userInfo.innerHTML =
'<img src="https://graph.facebook.com/'
response.id '/picture" style="margin-right:5px"/>'
response.name;
});
var access_tokn = response.authResponse.access_token;
var msg = document.getElementById('message').value;
var wallPost = {
access_token: access_tokn,
message: msg
};
FB.api('/YOUR_APP_ID/feed', 'post', wallPost, function(response) {
if (!response || response.error) {
alert('Error occurred');
} else {
//alert('Success!');
location.reload(true);
}
});
} else {
//user cancelled login or did not grant authorization
}
}, {scope:'email,read_stream,publish_stream'});
}
}
}
// run once with current status and whenever the status changes
FB.getLoginStatus(updateButton);
FB.Event.subscribe('auth.statusChange', updateButton);
};
(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);
}());
</script>
Спасибо