facebook登录将代码作为查询字符串中的变量返回 [英] facebook login returns code as variable in query string

查看:25
本文介绍了facebook登录将代码作为查询字符串中的变量返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 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=403bc8aaf9eaee4064e3cc27mailbefc7>

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆