문제 설명
onclick 속성을 사용하여 어떻게 벽에 게시할 수 있습니까? (how can i post on a wall using onclick attribute?)
i have tried a few different ways to get my data to post only when the user clicks it, but to no avail.
Hopefully someone can help:
<link href="facebook.css" rel="stylesheet" type="text/css">
<div class="fbbody">
<?php
require './facebook.php';
$facebook = new Facebook(array(
'appId' => ' *******',
'secret' => '******',
'cookie' => true,
));
$uid = $facebook‑>getUser();
$status = $_POST['status'];
if($status == "")
$msg = "Please enter a status.";
else {
$msg = "Thanks.";
}
?>
<script>
alert('<? echo $msg; ?>');
</script>
<div align="center">
<form method="GET" action="translate.php">
<textarea name="status2" cols="50" rows="5"/>
<?php echo str_ireplace(array ('old','awkward','all','again','behind','along','alright','hello','among','children','yes','child','kids','food','barnard castle','beer','book','blow','beautiful','bird','burst','brown','burn','boots'),
array ('auld', 'aakwad', 'aall','agyen','ahint','alang','alreet','alreet','amang','bairns','aye','bairn','bairns','bait','barney','beor','beuk','blaa','bonny','bord','borst','broon','bourn','byeuts'),$status); ?>
</textarea><br>
<?php
$args = array(
'message' => $_GET['status2'],
'link' => 'http://apps.facebook.com/geordie‑status/',
'caption' => 'Translate from English to Geordie'
);
$post_id = $facebook‑>api("/$uid/feed", "post", $args);
?>
<input type="submit" value="post to wall"/>
</form>
</div>
</div>
the above code is my translate.php.
how could i use the 'onclick' attribute to run the below code when it is clicked, and only when the button is clicked, not before.
<?php
$args = array(
'message' => $_GET['status2'],
'link' => 'http://apps.facebook.com/geordie‑status/',
'caption' => 'Translate from English to Geordie'
);
$post_id = $facebook‑>api("/$uid/feed", "post", $args);
?>
참조 솔루션
방법 1:
To post a status message you have to ask the user for permissions see: https://developers.facebook.com/docs/reference/login/extended‑permissions/ you will need publish_actions here.
Cause you want to post on the on click event you will have ask the permission before show the form.
You can use jquery to handle your on click event (on submit in the code below). jquery is used to send the message to an second page (ajax request). The second page (facebookpost.php) will post the message on the wall.
facebook.php:
<?
error_reporting(E_ALL);
ini_set('display_errors','on');
require 'facebook‑php‑sdk‑master/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '***************',
'secret' => '*******************************',
));
$applicationurl = 'http://testdrive.nl/facebook.php';
// Get User ID
$user = $facebook‑>getUser();
if(empty($user))
{
$params = array(
'scope' => 'publish_actions',
'redirect_uri' => $applicationurl
);
$loginUrl = $facebook‑>getLoginUrl($params);
header('Location: ' . $loginUrl ."\r\n");
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Facebook testpage</title>
</head>
<body>
<div class="container">
<div id="result"></div>
<form id="poster">
<textarea id="status2"></textarea>
<input type="submit" value="post to wall"/>
</form>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$('#poster').submit(function() {
$.get("facebookpost.php", { status2: $('#status2').val() }, function(data) {
$('#result').html(data);
});
return false;
});
</script>
</body>
</html>
facebookpost.php:
<?
error_reporting(E_ALL);
ini_set('display_errors','on');
require 'facebook‑php‑sdk‑master/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '***************',
'secret' => '*******************************',
));
//$applicationurl = 'http://testdrive.nl/facebook.php';
// Get User ID
$user = $facebook‑>getUser();
if(empty($user))
{
echo 'invalid user';
}
$args = array(
'message' => $_GET['status2'],
'link' => 'http://apps.facebook.com/geordie‑status/',
'caption' => 'Translate from English to Geordie'
);
$facebook‑>api("/$user/feed", "post", $args);
echo 'posted to your wall';
(by Cain Neal、Bass Jobsen)