所以Facebook已经改变了身份验证过程.再次.PHP SDK中的示例是:
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,现在我们如何验证尚未进行身份验证的用户?我们只是创建一个else语句并调用结果$facebook->getLoginUrl()吗?
此外,上面的示例给出了一个错误,因为调用$facebook->getUser()返回我的用户ID,但是当我尝试调用$facebook->api('/me')给出错误时我的应用程序失败了:
致命错误:未捕获OAuthException:必须使用活动访问令牌来查询有关当前用户的信息.在第560行的/home/woohoobi/public_html/facebookv2/inc/facebook.php中引用
有关如何验证未经过身份验证的用户的任何帮助都会很棒.
我创建了一个页面选项卡Facebook应用程序,我想根据用户是否为粉丝显示不同的内容.(也称为扇形门,登陆页面或显示页面)
为此,我使用PHP SDK,具体如下代码:
<?php
require 'src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
?>
Run Code Online (Sandbox Code Playgroud)
并在内容中:
<?php
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["page"]["liked"])) {?>
Thank you for liking our Page!
<?php } else { ?>
You haven't liked our page yet..
<?php };
// Debugging Code
echo "REQUEST:<br>";
print_r($_REQUEST);
echo "<br>GET:<br>";
print_r($_GET);
echo "<br>POST:<br>";
print_r($_POST);
?>
Run Code Online (Sandbox Code Playgroud)
当我使用我的Facebook用户登录并在我自己的页面上使用它时,这种方法有效.这意味着signed_request存在于$ _POST和$ _REQUEST中.
但是,当我用另一个用户测试它时,这些变量中没有signed_request值.
注意: - 我已经看了我的应用程序配置中的URL设置(300重定向和东西),但这看起来很好,就像我说我的用户它正在工作.. …
我希望用户使用Facebook登录后将用户重定向到特定的网页.我创建了一个LoginUrl使用Facebook PHP SDK并且用户点击此链接登录.我使用了http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/$facebook->getLoginUrl()
问题:如果我要包含redirect_uri参数,Facebook会给我一个错误An error occurred. Please try again later.登录网址工作正常而不包括redirect_uri.
谁知道如何解决这个问题?谢谢!
不工作的PHP代码
$loginUrl = $facebook->getLoginUrl(array(
"scope" => "email,user_education_history,user_work_history",
"redirect_uri" => "http://mydomain.com/login/facebook"
));
Run Code Online (Sandbox Code Playgroud)
使用PHP代码
$loginUrl = $facebook->getLoginUrl(array(
"scope" => "email,user_education_history,user_work_history",
));
Run Code Online (Sandbox Code Playgroud) 我正在制作一个Facebook画布应用程序 要使用PHP SDK获取用户信息:
<?
$app_id = "";
$secret="";
$canvas_page = "";
$auth_url = "";
$facebook = new Facebook(array(
'appId' => '',
'secret' => '',
));
// Get User ID
$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) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = …Run Code Online (Sandbox Code Playgroud) 我注意到,当我的应用程序使用php sdk for facebook创建的图像上传到Facebook相册时,sdk偶尔会抛出一个错误.
我在测试中几次从sdk中得到了一个错误...但是我试了一下...
try{
$picID = $this->facebook->api('/'.$this->aid.'/photos','post',$photo_details);
var_dump($picID);
}catch(Exception $e){
echo('exception caught '.var_dump($e));
}
Run Code Online (Sandbox Code Playgroud)
我正试图测试它,但由于运气不好,错误不会再发生.有人可以告诉我,我是否可以通过这种方式捕获异常?
谢谢.
我是developer.facebook.com的新手,想要创建应用程序.当我转到此URL时,https://developers.facebook.com/apps它没有显示任何按钮+ create new app
我之前创建了一个应用程序,稍后将其删除,因为它对我没用.现在有谁能告诉我应该怎么做才能创建一个新的应用程序?
嗨我做了一个连接Facebook和注册用户的代码,然后它使用户登录,一切都很好..当他们登录我设置
$_SESSION['id']
Run Code Online (Sandbox Code Playgroud)
我的猜测是,如果没有设置用户将从我的网站注销,它将不会"自动连接"..
因为之前它就像一个循环,每当我退出时,它再次使用facebook连接登录,即使用户还没有clic再次"登录facebook"...
编辑:我改变了条件,知道不是"循环"我可以退出网站..
但是会话,并没有被取消!为什么,只是将cookie设置为''但是,=(会话不是未设置的
这是我的代码
头部
<?php
//
// uses the PHP SDK. Download from https://github.com/facebook/php-sdk
include("facebook-php-sdk-master/src/facebook.php");
//
// from the facebook app page
define('YOUR_APP_ID', '');
define('YOUR_APP_SECRET', '');
//
// new facebook object to interact with facebook
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
//
// if user is logged in on facebook and already gave permissions
// to your app, get his data:
$userId = $facebook->getUser();
?>
Run Code Online (Sandbox Code Playgroud)
身体
<?php
echo $_SESSION['id'];
if ($userId) …Run Code Online (Sandbox Code Playgroud) 每当我尝试登录时,会打开一个询问基本权限的提示,然后将其重定向到带有URL的redirect_uri
="> HTTP://本地主机/演示/代码= AQDwzia3Wx1BktixF59jVHbm0ViGVJm8Xhb2tNZDyYreZh0KoSJhrSsJ8Aa2KX3gocwR0XNQjQz7ZlBh26_nBi-3iOMByhVO2cxwJ8maC4IHxBacfqXjzqIyBaZQbWKUUxPI6VBrqBgFXQasj7PEtmug7lt93dK4fmMC2A4i2dUYU-gSvzn0f0ZdB3eT_aSvgR1KoLCmQgLh3xix4H05QR6LCP9nLtQC4l9rMJW83kS0PNmWq0COZYvGfuX1R7519Fn3iXRB9F0MTsK1KQ_ulpK84PUCkuMu8et88Lln0ZwuzaPo0oERelkPWYnrrTKa-5W&状态= ed66ea618d8076d9e72c15d9a65a6312#=
即使facebook-> getUser()返回0
这是我的代码
<?php
require_once('php-sdk/facebook.php');
$facebook = new Facebook (array(
'appId' => '1234',
'secret' => '12313',
'cookie' => true
));
?>
<html>
<head> <title> Warming Up with FB API </title> </head>
<body> <h1> Hello World </h1> </body>
</html>
<?php
$loginUrl = $facebook->getLoginUrl(array (
'display' => 'popup',
'redirect_uri' => 'http://localhost/demo'
));
$user = $facebook->getUser();
//echo $user. '</br>';
if ($user) {
echo '<em>User Id: </em> '.$user;
} else {
$loginUrl = $facebook->getLoginUrl(array (
'display' => …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现服务器端的PHP facebook身份验证代码,以配合我的前端Javascript Facebook身份验证代码.
为此,我抓住当前的facebook会话,将其存储到PGP $ _SESSION数组中,然后使用它来调用以获取用户的用户名.
在第二次进入侧面时,我检查我们是否在PHP $ _SESSION数组中存储了facebook会话,如果是这样,我再次使用它来进行调用以获取用户名.这是我在尝试使用存储的会话时收到"__PHP_Incomplete_Class given的实例"错误消息的地方.
我想在页面刷新之间存储facebook会话的原因是每当我调用$ session = $ helper-> getSession(); 用户登录后第二次收到消息"此授权代码已被使用".我在某处读到你需要存储facebook会话,而不是每次刷新都要求新的,因为facebook令牌已经被用来获取第一个会话对象.
任何人都可以帮我弄清楚如何在PHP $ _SESSION数组中正确存储facebook会话,并能够将其拉回来,并使用它来打电话给Facebook吗?
我正在使用最新的facebook JS sdk和最新的facebook PHP sdk.
码:
<?php
session_start();
require_once ('facebookphpsdkv4/src/Facebook/GraphObject.php');
require_once ('facebookphpsdkv4/src/Facebook/GraphUser.php');
require_once ('facebookphpsdkv4/src/Facebook/GraphSessionInfo.php');
require_once ('facebookphpsdkv4/src/Facebook/Entities/AccessToken.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookSession.php');
require_once ('facebookphpsdkv4/src/Facebook/Entities/SignedRequest.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookSignedRequestFromInputHelper.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookJavaScriptLoginHelper.php');
require_once ('facebookphpsdkv4/src/Facebook/HttpClients/FacebookHttpable.php');
require_once ('facebookphpsdkv4/src/Facebook/HttpClients/FacebookCurl.php');
require_once ('facebookphpsdkv4/src/Facebook/HttpClients/FacebookCurlHttpClient.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookResponse.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookRequest.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookSDKException.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookRequestException.php');
require_once ('facebookphpsdkv4/src/Facebook/FacebookAuthorizationException.php');
useFacebookGraphObject;
useFacebookGraphUser;
useFacebookGraphSessionInfo;
useFacebookEntitiesAccessToken;
useFacebookFacebookSession;
useFacebookEntitiesSignedRequest;
useFacebookFacebookSignedRequestFromInputHelper;
useFacebookFacebookJavaScriptLoginHelper;
useFacebookHttpClientsFacebookHttpable;
useFacebookHttpClientsFacebookCurl;
useFacebookHttpClientsFacebookCurlHttpClient;
useFacebookFacebookResponse;
useFacebookFacebookRequest;
useFacebookFacebookSDKException;
useFacebookFacebookRequestException;
useFacebookFacebookAuthorizationException;
FacebookSession::setDefaultApplication('AppID', 'AppSecret');
if (isset($_SESSION['session'])) …Run Code Online (Sandbox Code Playgroud) 我想访问public post of the public page中php script。从Facebook页面获取此数据是否可行?我检查了文档,发现如下网址。
https://developers.facebook.com/docs/pages/access-tokens
在这里,它提供对我创建的页面的访问,但不访问其他用户页面。那么我如何才能访问其他用户的页面帖子。
任何帮助将不胜感激。