身份验证 – 用于iframe画布应用程序的Facebook OAuth登录显示徽标图像和转到Facebook.com标题而不是登录

身份验证 – 用于iframe画布应用程序的Facebook OAuth登录显示徽标图像和转到Facebook.com标题而不是登录,第1张

概述我正在尝试设置(iframe)的Facebook应用程序以使用OAuth进行身份验证. 我从Facebook上使用了 python-sdk,但是我并没有对结果感到满意. 问题是当我将一个从未访问我的应用程序的用户重定向到登录页面时,我的iframe会显示一个丑陋的中间页面,例如下面的一个: 如果用户点击“转到Facebook.com”链接,则将其重定向到标准的“请求许可”页面. 有没有办法避免第一 我正在尝试设置(iframe)的Facebook应用程序以使用OAuth进行身份验证.
我从Facebook上使用了 python-sdk,但是我并没有对结果感到满意.

问题是当我将一个从未访问我的应用程序的用户重定向到登录页面时,我的iframe会显示一个丑陋的中间页面,例如下面的一个:

如果用户点击“转到Facebook.com”链接,则将其重定向到标准的“请求许可”页面.

有没有办法避免第一页,引导用户直接到第二页?

对于尚未授予我的应用程序的用户的第一次访问,会发生此问题.

登录代码基于Python SDK中的OAuth示例:

class LoginHandler(BaseHandler):    def get(self):        verification_code = self.request.get("code")        args = dict(clIEnt_ID=FACEBOOK_APP_ID,redirect_uri=self.request.path_url)        if self.request.get("code"):            args["clIEnt_secret"] = FACEBOOK_APP_SECRET            args["code"] = self.request.get("code")            raw_response = urllib.urlopen(                "https://graph.facebook.com/oauth/access_token?" +                urllib.urlencode(args)).read()            logging.deBUG("access_token raw response " + raw_response)            response = cgi.parse_qs(raw_response)            access_token = response["access_token"][-1]            # Download the user profile and cache a local instance of the            # basic profile info            graph = facebook.GraphAPI(access_token)            profile = graph.get_object("me")            user = User.get_by_key_name(profile["ID"])            if not user:                user = User(key_name=str(profile["ID"]),ID=str(profile["ID"]),name=profile["name"],firstname=profile["first_name"],profile_url=profile["link"],access_token=access_token)                user.put()            elif user.access_token != access_token:                # we already kNow this user,but we need to update                user.access_token = access_token                user.put()            set_cookie(self.response,"fb_user",str(profile["ID"]),expires=time.time() + 30 * 86400)            self.response.headers["P3P"] = 'CP="IDC CURa ADMa OUR IND PHY ONL COM STA"'            self.redirect("/")        else:            self.redirect(                "https://graph.facebook.com/oauth/authorize?" +                urllib.urlencode(args))
解决方法 这个问题是由Facebook用来破解iframe的代码引起的.在Facebook的BUGzilla上已经出现了一个BUG: http://bugs.developers.facebook.net/show_bug.cgi?id=11326

唯一已知的解决这个问题的方法是首先重定向到https://graph.facebook.com/oauth/authorize?从客户端(即通过JavaScript),使用

<script type='text/JavaScript'> top.location.href="https://graph.facebook.com/oauth/authorize?....... </script>

当用户点击某个元素(例如登录按钮)或每当访问特定页面(仅将其包含在HTML头中)时,可以触发这一点.

总结

以上是内存溢出为你收集整理的身份验证 – 用于iframe画布应用程序的Facebook OAuth登录显示徽标图像和转到Facebook.com标题而不是登录全部内容,希望文章能够帮你解决身份验证 – 用于iframe画布应用程序的Facebook OAuth登录显示徽标图像和转到Facebook.com标题而不是登录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1102098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存