我知道如何在Facebook应用程序中发布状态更新,链接等的基础知识,感谢http://developers.facebook.com/docs/guides/canvas/,但我无法弄清楚它是否是可以将帖子的可见性限制为授权帖子的用户的某个预设朋友列表(因为Facebook网站上的文档并不是最好的).
是否可以从我的应用程序中发布到用户的墙上,以便只有预先选择的朋友列表才能看到它?我正在模仿Google Plus的"圈子"功能,用户可以拥有各种朋友群,只发布到这些群组列表.
在使用facebook graph api验证用户时,在成功登录后,我想收到用户的电子邮件.
为此,我提出了用户数据请求:https: //graph.facebook.com/me?access_token = xxxxxxxxxxx
但令我惊讶的是,我无法在json输出中收到用户的电子邮件...我怎么能收到电子邮件?我们需要指定任何权限吗?
这个问题只是为了好玩,也许是学习 PHP 速记技巧(如果存在)让我们假设我有这个代码:
$item = $this->get_item($id);
$item = $this->prepare_items(array($item));
$item = $item[0];
Run Code Online (Sandbox Code Playgroud)
默认情况下,*prepare_items* 函数接受一个项目数组并通过一些修改返回它们,因此如果我只想在一个项目上调用它,我应该将它推入一个像上面一样的数组中,但是我必须从我创建的数组。
那么是否有一种速记方法可以做到这一点,例如:
$item = $this->_prepare_items_output(array($item))[0];
// OR
$item = ($item = $this->_prepare_items_output(array($item)))[0];
Run Code Online (Sandbox Code Playgroud)
此外,如果您有一组 PHP 提示和技巧的链接,那就太好了。
如果用户登录到 facebook,FB.getLoginStatus() 工作正常。但是,如果用户未登录 facebook,则不会调用 FB.getLoginStatus() 回调,并且我无法在我的代码中处理这种情况,因为我没有收到回调。我不是在沙盒模式。
我还添加了 'true' 来强制回调 eg) FB.getLoginStatus(function(response){}, true)。它没有帮助。这是一个错误吗?已经修好了吗?
如果没有,请在用户退出 Facebook 时解决。我现在在这个问题上坚持了一个星期。
function GetFBLoginStatus() {
FB.getLoginStatus(function(response) {
alert("inside call back function");
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
alert("Connected FBID = " + uid);
} else if (response.status === 'not_authorized') {
alert("not_authorized");
} else {
alert("Not Logged into facebook");
}
return true;
}, true)
}
Run Code Online (Sandbox Code Playgroud) authorization facebook facebook-javascript-sdk facebook-login
简而言之,在这种情况下,我想使用FB api发布状态:
用户必须键入一些更新(在我的网站中)将发布到db,用户可以检查(发布到fb),以便更新也出现在他的FB配置文件中.
为了在我的网站上发布更新,我在HTML表单中有一个textarea,它将操作指向另一个php文件(将其写入数据库)
最后,我将告诉你这两个文件是安全的并给出准确的答案
如何整合这两个动作(发布到FB和DB),我该怎么做以及在哪里?
谢谢
需要帮助下面是我的应用程序的index.php的代码,我想在用户使用OFFLINE_ACCESS和publish_stram授权我的应用程序后在用户墙上发布
<?php
$app_id = "XXXXXXXXXX";
$app_secret = "XXXXXXX";
$canvas_page = "http://apps.facebook.com/esccounsel/";
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page) . ("&scope=read_stream publish_stream offline_access");
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
echo ("Welcome User: " . $data["user_id"]);
}
?>
Run Code Online (Sandbox Code Playgroud)
我想直接在用户墙上发帖请回答
我最近一直试图让我的应用程序使用PHP SDK 3.0,并且看到我实际登录时遇到了一些麻烦.我有来自3.1.1下载的"example.php",它不承认我已登录.文件"with_js_sdk.php"也不承认我在你第一次运行时已经登录了.运行之后,然后该文件和"example.php"都会看到我已登录.一旦我退出,"example.php"不起作用,并且"with_js_sdk.php"在第一次失败运行,但所有后续运行的两个文件(以及我正在测试的其他一些文件)都将正确进行身份验证.如果不工作,所有文件都会显示"OAuthException",并显示以下消息:"必须使用活动访问令牌来查询有关当前用户的信息." 即使我已登录.所以我的问题是,"with_js_sdk.php"中是否有我可以在其他文件中设置的内容?我猜它与我读过的那个文件中的"oauth:true"有关,虽然我不是Facebook编码专家,所以我不确定.我有一个iframe应用程序,所以我的应用程序中没有"FB.init"部分(顺便提一下,直到sdk发生变化).这是我正在测试的最小代码,它给出了错误:
<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => '11111111111111111',
'secret' => 'abcdefghijk etc...',
'cookie'=>true
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
getuser总是正确返回,但$ facebook-> api('/ me')调用总是失败,直到我运行一个带有fbml的文件.在你问之前,是的,我改变了文件中的appID和秘密.谢谢.
达里尔
我需要转储应用程序用户的一些信息我正在使用此代码!
$fbme = $facebook->api('/me');
$str = $fbme['name'].' '.$fbme['sex'].' '.$fbme['hometown_location'].' '.$fbme['profile_url'].'\r\n';
$fp = fopen("data.txt", "w");
fwrite($fp, $str);
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
但这只显示名称,没有别的!为什么?