且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用PHP或JavaScript Facebook SDK,如何保持用户登录到我的网站?

更新时间:2022-03-09 00:07:18

这里有两种情况.一种是对用户进行身份验证,另一种是对用户进行识别.

There are two scenarios here. One is to authenticate the user, and the other one is to recognize the user.

当您使用任何Facebook API提供的登录方法时,通常会发生的事情是,他们将查看用户是否与Facebook建立了会话.如果不是,将提示用户登录,以便您可以看到该用户.在您的情况下,您希望用户始终登录到Facebook.这并不是真正可行的方法,因为您需要找出它是哪个用户.您可以将带有一些识别详细信息的cookie存储在用户计算机上.您需要具有该用户的脱机权限,否则该用户将必须使用API​​登录才能获得新的access_token.

What usually happens when you use the login methods provided from any Facebook API is that they will see if the user have a session going with Facebook. If not the user will be prompted to log in so you can see which user it is. In your case you want the user to always be logged in to Facebook. This is not really doable since you need to find out which user it is. You could store a cookie on the users computer with some recognition details. You would need to have offline permissions for the user or else the user will have to be logged in with the API to get a fresh access_token.

如果需要我的建议,您应该只使用API​​的GetLoginStatus方法来检查用户是否与Facebook建立了会话.如果用户未登录Facebook,则要求他们登录您的网站也不过分.大多数使用Facebook的用户都存储了他们的登录信息,因此只要打开浏览器,他们就始终可以进行会话.

If you want my advise you should just use the GetLoginStatus method of the API to check if the user has a session going with Facebook. If the user is not logged in to Facebook it is not too much to require them to log in on your website. Most users who use Facebook have their login stored so they will always have a session going whenever their browser is open.

这将是/***的解决方法,因为它不需要您向用户询问脱机权限,我想许多用户都不愿提供这些权限.如果由于某种原因您不能使用该方法,我建议您获得脱机许可,然后在没有计时器的情况下将cookie存储在他们的计算机上,这样就不会自动将其删除.

That would/is the best way to go about it as it doesn't require you to ask the users for offline permissions which I suppose many users wouldn't want to give. If for some reason you can't use that approach I suggest getting offline permission and then storing a cookie on their computer with no timer on it so it won't be automatically deleted.

很抱歉,我希望对您有所帮助:)

Sorry for the wall of text, but I hope I was somewhat helpful :)