在 PHP 中首次到达时确定客户端 Facebook 用户 ID 的最佳方法是什么?
情况:一个可能在我的网站上注册或没有注册的随机用户(比如说在另一台计算机上)在一个选项卡中登录 Facebook。然后用户打开一个新选项卡并转到我的网站。
问题:这是用户第一次在这台计算机上访问我的网站。因此,不存在 cookie、获取变量、发布变量或任何此类内容。
服务器端解决方案:将客户端重定向到facebook->getLoginStatusUrl(),然后使用返回的信息。 (如果用户注册了应用程序,调用就会成功)。优点:不需要客户端代码。缺点:重定向所有登陆我网站的用户。
客户端解决方案:不太确定这到底是如何工作的,但类似于“使用 js sdk 来确定是否登录,如果登录,则获取客户端身份验证令牌并将其存储到 cookie 并重新加载页面”。优点:如果未登录 Facebook,则无需刷新,无需重定向。缺点:页面重新加载、客户端代码。
有更好的解决方案吗?另外,有人更具体地知道如何实现客户端解决方案吗?
The situation: a random user who may or may not be registered with my site (at a different computer, lets say) signs into facebook in one tab. User then opens a new tab and goes to my website.
The problem: This is the first time that the user has ever been to my website on this computer. Therefore, there are no cookies, get variables, post variables, or anything of the sort.
Server side solution: redirect the client to facebook->getLoginStatusUrl() and then use the returned information. (If user is registered with app, call will succeed). Pros: no client code required. Cons: redirects all users who land at my site.
Client solution:Not exactly sure how exactly this would work, but something along the lines of "using js sdk to determine if logged in and if so get and store client auth token to cookie and reload page". Pros: if not logged into facebook there is no refresh, no redirect necessary. Cons: page reload, client code.
Is there a better solution? Also, anyone know more specifically how to make the client solution happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当用户通过 Facebook 登录您的网站时,您可以从 Facebook 获取用户 ID 和用户名。
您可以通过 Javascript SDK 或 PHP SDK 获取它们。
此时,您可以查询包含该用户ID的登录数据的表。
如果有,则该用户不是第一次到达。
如果没有结果,则将该用户添加到您的表中,并且该用户是首次到达的。
You get Userid and Username from Facebook when an user logged in to your site via Facebook.
You can get those via either Javascript SDK or PHP SDK.
At that time, you can query a table which is including logging in data with that userid.
If there is one then that user is not on first arrival.
If there is no results, then add that user to your table and that user is on first arrival.