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

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

问题描述

我使用Facebook登录我的网站之一,使用PHP的SDK。

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

<一个href=\"https://www.facebook.com/dialog/oauth?client_id=123131231&redirect_uri=http%3A%2F%2Fxyz.com%2Flogin_fb.php&state=403bc8aaf9eaee4064e3cc27befc71ff&scope=email\" rel=\"nofollow\">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

$用户我得到 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使用 getAccessTokenFrom code
问题可以得到解决。

By adding the following line and using getAccessTokenFromCode in Facebook SDK, the problem can be resolved.

该acesss code到期。因此,通过交换code获得新的访问code可以解决该问题。

The acesss code expires. So getting new access code by exchanging code resolves the problem

$ access_ code = $ facebook-&GT; getAccessTokenFrom code($ _ GET ['code']);

这篇关于Facebook登录返回code作为查询字符串变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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