<?php
session_start();
//included file and use
$app_id = 'xxx';
$app_secret = 'xxx';
FacebookSession::setDefaultApplication($app_id, $app_secret);
$helper = new FacebookRedirectLoginHelper("`http://example/facebook4.0`/", $app_id, $app_secret);
try
{
$session = $helper->getSessionFromRedirect();
}
catch(FacebookRequestException $ex) { }
catch(Exception $ex) { }
$loggedIn = false;
if (isset($session))
{
if ($session)
{
$loggedIn = true;
try { //logged here and get data
$user_profile = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());
print_r($user_profile); //print data
}
catch(FacebookRequestException $e) {
echo "Exception occured, code: " . $e->getCode();
echo " with message: " . $e->getMessage();
}
}
}
if(!$loggedIn) //if user is not online // get link and add scope
{
$loginUrl = $helper->getLoginUrl(array('public_profile','email'));
echo "<a href='$loginUrl'>Login With Facebook</a>";
}
else
{
print_r($user_profile); //logout link is generated here
echo '<br><br><a href="index.php">Logout</a>'; //print to sceen
}
?>
我已将域名设置为 localhost,将站点 URL 设置为http://localhost/
。
我也尝试过http://localhost:80
, http://mydomainname:80
(更换主机)
这是我收到的响应错误:
Facebook\FacebookSDKException Object
(
[message:protected] => Failed to connect to graph.facebook.com port 443: Network unreachable
[string:Exception:private] =>
[code:protected] => 7
[file:protected] => C:\xampp\htdocs\myapp\Facebook\HttpClients\FacebookCurlHttpClient.php
[line:protected] => 142
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => C:\xampp\htdocs\myapp\Facebook\FacebookRequest.php
[line] => 248
[function] => send
[class] => Facebook\HttpClients\FacebookCurlHttpClient
[type] => ->
[args] => Array
(
[0] => https://graph.facebook.com/v2.0/oauth/access_token?client_id='my key'&redirect_uri=http%3A%2F%2Flocalhost%3A80%2Fmyapp%2F&client_secret='mykey_secert'&code=AQCYmzsFNUIQG7gUAZ3y-YJHLeIGcF-xyqHotx31MCJGlm16fV9VbVSzlGlx5280-u0Ho3jFjg_REevN5J0LEIPHerY1QaaBYjpkkoIMf6PCwHGj2OIrQDvfyGcUJRK4cJP0YQ8H8HdYw86xEhlcdJHvnObkCU6tSBcVbDWM8uoXJlRqNl6o-IdxoSfbk6IjuCreyagMXvam4vgV0HKxn0nkWaV26k1P6kQP_L1LtXXx2UyUQ1i0jJGL9JiGr1gsUbf5drY_URIrEWzawumpnSWkuxln8hiOtAr_xwM_4cBZwxf3_pWq8YnUotpmzzM5sPhW_ERMYWAdovjZPHu7Xdgs&access_token=329734847193179%7Cd9e5cdb2d0c3cbe1e127827762e94284&appsecret_proof='key_proof'
[1] => GET
[2] => Array
(
)
)
)
[1] => Array
(
[file] => C:\xampp\htdocs\myapp\Facebook\FacebookRedirectLoginHelper.php
[line] => 146
[function] => execute
[class] => Facebook\FacebookRequest
[type] => ->
[args] => Array
(
)
)
[2] => Array
(
[file] => C:\xampp\htdocs\myapp\index.php
[line] => 52
[function] => getSessionFromRedirect
[class] => Facebook\FacebookRedirectLoginHelper
[type] => ->
[args] => Array
(
)
)
)
[previous:Exception:private] =>
)
我知道这是一个老问题,OP 可能已经找到了解决方案。我在与该公司合作时也遇到了同样的问题Laravel 社交名流插入。
为了后代,我想在这里发布解决方案。这个问题在这篇文章中得到了解释question:域 graph.facebook.com 解析为某些网络可能未配置为路由的 IPV6 地址。您可以请求 cURL 将 IP 地址解析为其 IPV4 值。设置选项CURLOPT_IPRESOLVE
to CURL_IPRESOLVE_V4
.
对于社交名流插件,我们必须修改FacebookProvider.php
包括附加选项。
Edit
更具体地说,Socialite 使用 GuzzleHttp,我们需要将其作为参数传递给 GuzzleHttp Client 方法:
'curl' => [ CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)