繁体   English   中英

Facebook PHP SDK 4.0登录

[英]Facebook PHP SDK 4.0 Login

我试图让Facebook登录他们的新PHP SDK 4.0为我的网站工作。 我几乎逐字逐句地遵循他们的要点,仍然无法获得测试页面。 当我尝试登录时,我被重定向到表单的URL:

https://www.facebook.com/v2.0/dialog/oauth?client_id={some number}&redirect_uri{localhost%2F%7E{MyName}%2F{my site}}&state=08d94ec4670256aa2b2c586781590766&sdk=php-sdk-4.0.0&scope=

我已经在我的Facebook开发者页面上填写了相同的URL,这是我试图测试的代码:

<?php

require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;

// start session
session_start();

// init app with app id and secret
FacebookSession::setDefaultApplication( '{My app ID}','{My app secret}' );

// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}' );

try {
  $session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
  // When Facebook returns an error
} catch( Exception $ex ) {
  // When validation fails or other local issues
}

// see if we have a session
if ( isset( $session ) ) {
  // graph api request for user data
  $request = new FacebookRequest( $session, 'GET', '/me' );
  $response = $request->execute();
  // get response
  $graphObject = $response->getGraphObject();

  // print data
  echo '<pre>' . print_r( $graphObject, 1 ) . '</pre>';
} else {
  // show login url
  echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}

不幸的是,我从未被重定向,甚至加载登录页面。 我在这里做错了什么?

我有同样的问题。 您需要先在Facebook App设置中设置域URL和站点URL。 转到此页面可更改您的设置: https//developers.facebook.com/apps

我在这里一步一步地分享: http//bit.ly/1iNNsBy

您不必包含php文件。 Facebook希望您使用作曲家来管理所需的内容。

但是....他们给你一个解决方法:包括autoload.php并保留他们为你提供的文件结构,以便最简单的实现。 为了方便起见,将SDK中的所有文件放入一个名为facebook的文件夹中,因此您在其中有一个名为src的子文件夹,另一个名为Facebook

然后SDK会创建一个链接,供用户点击该链接以授权访问您的应用。

如果您正在测试,则需要不断删除Facebook个人资料中的应用以获取每次注册窗口( Settings右上角下拉菜单,然后是2014年8月左侧的Apps ),否则它将直接跳转到指定的重定向页面并且似乎没有任何效果。

// if you include this file you don't need to use composer
require_once('facebook/autoload.php');

// use these
use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 

// initiate the session
FacebookSession::setDefaultApplication('[YOUR ID]', '[YOUR SECRET]');

// use the helper 
$helper = new FacebookRedirectLoginHelper('[YOUR REDIRECT URL]');
// get a loginurl
$loginUrl = $helper->getLoginUrl();


echo "<a href='".$loginUrl."'>Link here</a>";

检查说明:

  1. 检查您是否在Facebook上设置了测试应用程序。
  2. 检查域名是否与您正在使用的域名匹配。
  3. 检查您将用于处理响应的重定向页面的完整URL。

脚本不完整。 如果未设置会话,则必须编写else部分。 请求许可在这里发挥作用。

else {
    $helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/yourappname/');
    $permissions = array(
        scope =>'publish_actions',
                'email',
                'user_location',
                'user_birthday'
    );

    // Get login URL
    $auth_url = $helper->getLoginUrl($permissions);
    //$auth_url = $helper->getLoginUrl(array('email'));
    echo "<script>window.top.location.href='".$auth_url."'</script>";

Facebook Developer文档中所述 ,您需要PHP 5.4+。

这是你正在使用的代码吗?

$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}' );

您将从Facebook重定向,因此此处的参数必须是可从Internet访问的URL。

我在尝试执行时遇到了问题

$loginUrl = $helper->getLoginUrl();

解决方案是致电:

session_start();

之前

$helper = new FacebookRedirectLoginHelper($redirect_url);

在@ DigitalVisual上面的答案。

$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}');

使用如下:

$helper = new FacebookRedirectLoginHelper('http://example.com/help.php');

必须使用完整的URL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM