Facebook SDK PHP 5.0 getLoginUrl()错误500

时间:2015-07-29 23:30:33

标签: php facebook facebook-graph-api facebook-php-sdk

我正在尝试使用Facebook PHP SDK 5.0下提供的示例登录Facebook。我收到500内部服务器错误。我正在使用来自HostGator的婴儿计划,该计划正在运行Php 5.5.27 PHP INFO 。是否有配置我需要添加到我的服务器以使工作正常?

login.php

y > x

login-callback.php

<?php
session_start();
// Include the required dependencies.
require_once( 'vendor/autoload.php' );
// Initialize the Facebook PHP SDK v5.
$fb = new Facebook\Facebook([
  'app_id'                => '495994870548274',
  'app_secret'            => '593f18b375c9e23d34b9794136cf7158',
  'default_graph_version' => 'v2.3',
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://techcomsgb.com/kidneytest/login-callback.php', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'

//您可以将它们重定向到仅限会员的页面。     // header('Location:https://example.com/members.php');

4 个答案:

答案 0 :(得分:1)

我也有这个错误。大多数事情都在托管方。我通过做一些事来解决。

  1. 检查托管PHP版本5.4或更高版本
  2. 检查已启用mbstring
  3. php.ini
  4. 中设置mbstring值

    MBString Values Sample Image

    查看更多:https://benmarshall.me/facebook-php-sdk/#requirements

    然后,在callback.php Facebook Exceptions无法正常工作,所以我将其更改为PHP异常方法,如下所示:

    try {
        $accessToken = $helper->getAccessToken();  
    } catch(Exception $e) {
        // There was an error communicating with Graph  
        echo $e->getMessage();       
        exit;  
    }
    

    然后我收到错误消息。这是date.timezone,我在 php.ini 文件中添加了,现在一切正常。

    [date] date.timezone = "America/Los_Angeles"
    

答案 1 :(得分:0)

简单错误,login-callback.php上的文件权限不正确

答案 2 :(得分:0)

这是因为您忘记在此部分中放置app-id

    // Validation (these will throw FacebookSDKException's when they fail)
    $tokenMetadata->validateAppId({app-id}); // Replace {app-id} with 
    // your app id
    // If you know the user ID this access token belongs to, you can validate 
    // it here
    //$tokenMetadata->validateUserId('123');
    $tokenMetadata->validateExpiration();

{app-id}替换为您的ID,然后它应该有效。我很惊讶Facebook上没有人指出这一点。

答案 3 :(得分:-1)

对我来说,这是$helper->getLoginUrl()返回的链接,所以我只是将https://www.facebook.com/v2.8/dialog/oauth替换为https://graph.facebook.com/oauth/authorize

 $login_url = $login_helper->getLoginUrl('www.yoururl.com/fb-callback.php'), $permissions);
 $login_url = str_replace('https://www.facebook.com/v2.8/dialog/oauth?', 'https://graph.facebook.com/oauth/authorize?', $login_url);

请查看此帖子以获取参考Facebook oauth authorize URL and parameter options

“当您想手动构建登录流程时,您应该使用/ oauth / authorize .. else如果您正在使用它使用/ dialog / oauth的facbook提供的javascript / Apps api”

相关问题