facebook登录将代码作为查询字符串中的变量返回 [英] facebook login returns code as variable in query string
问题描述
我正在使用 PHP sdk 在我的网站之一中使用 Facebook 登录.
I am using a Facebook login in one of my website using the sdk for PHP.
有时 facebook 登录有效,有时则无效.
Sometimes the facebook login works and sometimes it doesn't.
这是我的 index.php:
Here is my index.php:
/// fb login area.....
include("facebook/src/facebook.php");
$facebook = new Facebook(array(
'appId' => '159326560901256',
'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));
$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'email',
'redirect_uri' => 'http://xyz.com/login_fb.php'
));
<a href="<?=$loginUrl?>"><img class="fb_img"
src="images/fb_logo.png" width="153" height="38" /></a>
它转到login_fb.php
:
https://www.facebook.com/dialog/oauth?client_id=123131231&redirect_uri=http%3A%2F%2Fxyz.com%2Flogin_fb.php&state=403bc8aaf9eaee4064e3cc27befc71ff&scope=email
现在在 login_fb.php 我得到这个网址:
now on login_fb.php i get this url:
login_fb.php?code=ASA&S^&*A^S&*A^S&*^A&*ASUAUIYSUIYASIYAUSYUIASA
在 $user
我得到 0
/// code for login_fb.php
include("facebook/src/facebook.php");
$facebook = new Facebook(array(
'appId' => '159326560901256',
'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
}
catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
$logoutUrl = $facebook->getLogoutUrl(array(
'next' => 'http://minuteville.com/index.php?val=fblogout'
));
为什么它不起作用?
推荐答案
通过添加以下行并在 Facebook SDK 中使用 getAccessTokenFromCode
,问题可以解决.
By adding the following line and using getAccessTokenFromCode
in Facebook SDK,
the problem can be resolved.
访问代码已过期.所以通过交换代码获得新的访问代码可以解决问题
The acesss code expires. So getting new access code by exchanging code resolves the problem
$access_code = $facebook->getAccessTokenFromCode($_GET['code']);
这篇关于facebook登录将代码作为查询字符串中的变量返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!