gpt4 book ai didi

php - facebook认证/登录问题

转载 作者:行者123 更新时间:2023-12-04 06:53:14 25 4
gpt4 key购买 nike

我已经使用 php 设置了 facebook 身份验证,它是这样的
首先在这里获得授权:

https://graph.facebook.com/oauth/authorize?client_id=<?= $facebook_app_id ?>&redirect_uri=http://www.example.com/facebook/oauth/&scope=user_about_me,publish_stream

然后在这里获取访问 token :
$url = "https://graph.facebook.com/oauth/access_token?client_id=".$facebook_app_id."&redirect_uri=http://www.example.com/facebook/oauth/&client_secret=".$facebook_secret."&code=".$code;"

function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}


$access_token = get_string_between(file_get_contents($url), "access_token=", "&expires=");

然后获取用户信息:
$facebook_user = file_get_contents('https://graph.facebook.com/me?access_token='.$access_token);

$facebook_id = json_decode($facebook_user)->id;
$first_name = json_decode($facebook_user)->first_name;
$last_name = json_decode($facebook_user)->last_name;

这非常难看(在我看来)但它有效......但是......用户仍然没有登录......因为我没有创建或检索任何 session 变量来确认用户已登录到 Facebook ...

这意味着在完成身份验证后,用户仍然必须登录....

第一:有没有更好的方法使用 php 来做我上面做的事情?
第二:我如何设置/获取 session 变量/cookie 以确保用户不必单击登录

感谢您的帮助

最佳答案

好回答你的第一个问题“有没有更好的方法使用 php 来做我上面做的事情?”

基本上我认为这是一个意见问题,因为有太多的选择。这是您对什么感到满意以及您的应用程序有什么目的。

就个人而言,(我说这不是为了给你施加压力,而是提供一个选项)我使用 javascript 登录,它来自 facebook,它是一个精美的手工脚本,干净、快速等,可以找到 here (在这个阶段,如果我的信息已经过时,我很抱歉,因为我刚刚注意到 Facebook 已经更新了该页面,哈哈!)好的部分是它将身份验证 token 保存为变量(您可以将其更改为 session ,如果你愿意),这基本上完成了,因为你只是把它贴在你展示的大多数网址的末尾。

(虽然浏览新更新的网站,代码在布局上看起来有点“复杂”,所以不要害怕寻求帮助,我会给你原始代码)

问题 2:您如何获取/设置 session 变量...
嗯,有很多事情和方法等等......但是我会保留基本/简单版本并添加注释,您应该在脑海中归档以获得更高级的选项。
首先,在任何包含 session 变量的页面的开头,您应该从
session_start();
然后当你想添加一个 session 变量时,这只是一个简单的问题
$_SESSION['session_variable_name'] = $variable;
(是的,我知道你应该做整个 foo 和 bar 的事情,但它们让我很恼火:D)。
就是这样!如果你想“注销”,你可以
session_destroy();
它将停止携带 session 详细信息。
现在 session 记录:

  • 除非另有说明, session 通常作为文件保存在您的服务器上!这可能会违反您所做的任何隐私声明!
  • session 通常无法跨子域(www.website.com -> website.com)存活,并且不建议 $_POST 数据。此外,有些人会遇到 session 数据从 http://到 https://的问题。
  • session 不会永远持续下去,它们本质上将 session ID 留在客户端浏览器上的 cookie 中以供以后引用。
  • 当您有多个服务器用于流量权重分配时,您可能会再次丢失 session ,因为它不会跨服务器传递。您可以将它们保存在所有服务器都可以访问的位置,或者拥有一个可以满足诸如 memcache 之类的 session 的服务器。

  • 我认为这是您最需要了解的有关 session 的信息:P

    我希望有帮助!

    乔恩

    关于php - facebook认证/登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825957/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com