Facebook登录的Django和URL重定向?

我已实施有一个用户登录/注册页面的Django应用程序。 我想提出的实也是用户ID可能​​登录到我的应用程序。 这样做,我跟着这个链接http://developers.facebook.com/docs/guides/web/#login。 随着该链接的帮助,我现在可以登录使用Facebook ID也。 点击Facebook登录按钮,弹出窗口与Facebook的登录页面; 提供用户名ñPASSW,使得它记录在与Facebook。 但登录也该页面后,被重定向回我的主页。 我需要将其重定向到其他一些网址,说的http://本地主机/登录/。 有人可以帮我解决这个问题。 我会糊用于Django的登录我的HTML的一部分。

HTML

<body> <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"></script> <script> FB.init({ appId:'114322105313139', cookie:true, status:true, xfbml:true }); </script> <fb:login-button>Login with Facebook</fb:login-button> </body>

settings.py

# Django settings for universityDB project. DEBUG = True TEMPLATE_DEBUG = DEBUG ADMINS = ( # ('Your Name', 'your_email@domain.com'), ) MANAGERS = ADMINS DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'student', # Or path to database file if using sqlite3. 'USER': 'root', # Not used with sqlite3. 'PASSWORD': 'qburst', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } } EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = '587' EMAIL_HOST_USER = "rv@gmail.com" #create a gmail id EMAIL_HOST_PASSWORD = "xxxx"#pwd for that id EMAIL_USE_TLS = True FACEBOOK_CACHE_TIMEOUT=1800 FACEBOOK_APP_ID='xxx' FACEBOOK_API_KEY='xxx' FACEBOOK_SECRET_KEY='xxxx' FACEBOOK_INTERNAL = 'TRUE' # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # On Unix systems, a value of None will cause Django to use the same # timezone as the operating system. # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'America/Chicago' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'en-us' SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = True # If you set this to False, Django will not format dates, numbers and # calendars according to the current locale USE_L10N = True # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = '' # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). # Examples: "http://media.lawrence.com", "http://example.com/media/" MEDIA_URL = '' # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # trailing slash. # Examples: "http://foo.com/media/", "/media/". ADMIN_MEDIA_PREFIX = '/media/' # Make this unique, and don't share it with anybody. SECRET_KEY = 'b_3=te)1b57mqsz^))jg95i%umw=*pug_i*8j!$6@y4(ie=8x$' # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', # 'django.template.loaders.eggs.Loader', ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfResponseMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'facebook.djangofb.FacebookMiddleware', 'facebookconnect.middleware.FacebookConnectMiddleware', # 'facebook.djangofb.FacebookMiddleware', # 'socialregistration.middleware.FacebookMiddleware' , ) AUTHENTICATION_BACKENDS = ( 'facebookconnect.models.FacebookBackend', 'social_auth.backends.facebook.FacebookBackend', 'django.contrib.auth.backends.ModelBackend', ) LOGIN_URL = '/login-form/' LOGIN_REDIRECT_URL = '/logged-in/' LOGIN_ERROR_URL = '/login-error/' SOCIAL_AUTH_ERROR_KEY = 'social_errors' SOCIAL_AUTH_COMPLETE_URL_NAME = 'complete' SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete' SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user' SOCIAL_AUTH_EXTRA_DATA = False SOCIAL_AUTH_EXPIRATION = 'expires' SOCIAL_AUTH_SESSION_EXPIRATION = False DUMMY_FACEBOOK_INFO = { 'uid':0, 'name':'(Private)', 'first_name':'(Private)', 'pic_square_with_logo':'http://www.facebook.com/pics/t_silhouette.gif', 'affiliations':None, 'status':None, 'proxied_email':None, } ROOT_URLCONF = 'universityDB.urls' TEMPLATE_DIRS = ( "/home/Desktop/universityDB/templates" # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'universityDetails', # Uncomment the next line to enable the admin: 'django.contrib.admin', 'captcha', 'facebookconnect', 'social_auth', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', )

--------------解决方案-------------

该代码看起来就像FB的HTML。 你需要向我们提供您的Django验证结构的一个更好的主意,如果你想要更多的帮助。

有相当多几个步骤在你前面。 我会去了解一下Django的SocialAuth一个易于集成的经验,如果我是你。

编辑:作为后续行动纳入你的Settings.py,假设您已经阅读Facebook的身份验证文档还有SocialAuth README,您将需要设立FB的验证回调URL相应的控制器。

在此之后,这些挂钩观点SocialAuth到您当前的验证过程:

def facebook_login(request):
"""
Facebook login page
"""
if request.REQUEST.get("device"):
device = request.REQUEST.get("device")
else:
device = "user-agent"

params = {}
params["client_id"] = FACEBOOK_APP_ID
params["redirect_uri"] = request.build_absolute_uri(reverse("socialauth_facebook_login_done"))

url = "https://graph.facebook.com/oauth/authorize?"+urllib.urlencode(params)

return HttpResponseRedirect(url)

def facebook_login_done(request):
user = authenticate(request=request)

if not user:
request.COOKIES.pop(FACEBOOK_API_KEY + '_session_key', None)
request.COOKIES.pop(FACEBOOK_API_KEY + '_user', None)

# TODO: maybe the project has its own login page?
logging.debug("SOCIALAUTH: Couldn't authenticate user with Django, redirecting to Login page")
return HttpResponseRedirect(reverse('socialauth_login_page'))

login(request, user)

logging.debug("SOCIALAUTH: Successfully logged in with Facebook!")

if request.GET.get('next'):
return HttpResponseRedirect(request.GET.get('next'))
else:
return HttpResponseRedirect(LOGIN_REDIRECT_URL)

分类:JavaScript的 时间:2012-01-01 人气:0
分享到:

相关文章

  • 是否有一个HAML实现与Python和Django的使用 2012-11-18

    我碰巧对面HAML,一个有趣而美丽的方式来标记的内容和编写模板HTML绊倒. 由于我使用Python和Django的为我的网络发展的需要,我想看看是否有一个Python实现HAML的(或类似概念 - 需求不完全相同),可以用来代替Django的模板引擎. --------------解决方案------------- 您可能会感兴趣的SHPAML: http://shpaml.com/ 我积极维护它. 这是一个简单的预处理程序,因此它不依赖于任何其他工具,如元史. 我碰巧使用它与Django的,

  • 如何一个Ruby on Rails的开发者应该开始学习Python的Django的 2012-01-17

    我想学习Django的web开发. 而对于Django的,我需要知道的Python. 我从来没有Python编写的,但阅读网页,我认为它不会是一个艰巨的任务的讨论和文章之后. 我一直在编码Ruby和使用Ruby on Rails从超过过去两年. 所以我可以说,我有网的发展较好的知识与MVC框架. 我应该如何去学习Python和Django的? 虽然这可能是非常有用的,但我不希望学习Python的Django的比其他的任何其他方面. 我要寻找指向一些教程,书籍,博客或其他任何材料,可让我开始迅速发

  • 是的Python(Django的)经验professionaly媲美Ruby on Rails的? 2012-02-05

    我问这个,因为似乎有可用一些更多的就业机会(至少在家工作)的回报率. 如果雇主认为在简历显著的Python / Django的经验,会是合理的相信,开发商将能够很快学会Rails的? --------------解决方案------------- 我的经验是,那该有多语言和/或框架,你知道的,越容易学习新的语言. 所以,如果你在程序相当不错的经验,它不应该是一个大问题. Python和Ruby都是动态的,完全面向对象的语言. 只是语法有点不同. 也就是说,其中Python使用缩进2马克代码块,红

  • 如何获得在Eclipse这个Python的Django项目的运行,从而使浏览器可以发送一个基本要求,并从它那里得到一个基本的反应? 2012-02-12

    我非常新于Linux和Python. 我以前从来没有写过一行Python代码. 到目前为止,我已经找到了如何让安装了Eclipse,Python和Django和我有Python和Django的正确安装,因为当我输入 $ python 它给我的蟒蛇提示,当我输入 >>> import django 它不返回任何错误. 从我读过的东西,这是一件好事. 我最大的问题现在越来越项目的运行. 我来自一个C#/ MVC.NET背景,在这方面,一切都准备好正确运行开箱. 因此,我可能有点被宠坏了. 所

  • Python的/ Django的 - 创世编辑模型表格后 2012-02-26

    我在PHP / ZEND强大的背景,现在我使用Python入门/ Django的. 在Zend公司可以采取一个表单元素并编辑它在任何时候漂亮多了. 这是伟大的,因为你可以采取一个表单对象,并进行小改动它没有需求创造了一个全新的表单对象. 我试图做到这一点在Django. 我有一个表格. 让我们把它称为投票. 这种形式可能需要不同的看法方法应用于不同的部件. 我不希望这样的小改动,重新创建整个表格... 即 form = VoteForm(initial={}) ## then something

  • 现在转换这个字符串日期时间对象Python或Django的? 2012-03-07

    现在转换这个字符串日期时间对象Python或Django的? 2010-08-17T19:00:00Z 2010-08-17T18:30:00Z 2010-08-17T17:05:00Z 2010-08-17T14:30:00Z 2010-08-10T22:20:00Z 2010-08-10T21:20:00Z 2010-08-10T20:25:00Z 2010-08-10T19:30:00Z 2010-08-10T19:00:00Z 2010-08-10T18:30:00Z 2010-08-1

  • 展望开始使用了Apache,PHP,MySQL的,Python和Django的一个新鲜的苹果 2012-03-09

    我看其他的问题,但找不到任何... 我已经新安装我的Mac OSX与10.5. 我需要学习Python / Django的一个新的工作,所以要设置这一切正常,准备开发,并从我的浏览器使用http运行://本地主机/ 我来自一个PHP的背景和以前一直使用甲基苯丙胺. 但我想一切都一起工作......的Apache,PHP,MySQL的,Python和Django的. 使用甲基苯丙胺易于安装本地开发服务器,但我想Python和Django的运行很好了. 所以,我可以开始开发,并在之后的Python

  • JavaScript验证在Django管理 2012-06-18

    我想使用JavaScript来验证Django管理界面的形式. 我要利用这个jQuery插件,但我想确保有没有一些其他的Django的传统方式来做到这一点. 我四处张望了一下,并没有看到什么,但我想确定我是不是失去了一些东西. --------------解决方案------------- 这里是JavaScript的Django管理加载默认的列表change_form.html模板: core.js admin/RelatedObjectLookups.js js/jquery.min.js

  • Python的Django的VS ASP.NET MVC 2012-06-20

    大家好 ! 我是相当新的Web开发场景,我想知道,如果你们能帮助我打破了使用Python的Django VS除了其框架的成熟水平asp.net MVC的优点和缺点. 我用JAVA中级经验. 截至目前,我倾向于蟒蛇,但我只是想确保我作出了正确的选择. 我发现自己有限的可用的asp.net网站发展的书籍. 我知道,有官方asp.net网站店面的例子. 然而,该教程是一个小我很难跟随. 我身边做了一个研究,希望蟒蛇可能是我的下一个可用的选择. 还有更多的可用在线教程为Python反正. 你们有什么觉得

  • Python或Django的报告工具,而不是如何生成PDF,像asp.net水晶报表 2012-06-20

    Python或Django的报告工具,而不是如何生成PDF,像asp.net水晶报表 --------------解决方案------------- 看看杰拉尔报告. Python的报告实验室是一个级别低于堆栈,但非常非常容易翻车基于此工具包自己的报表类. 如果你喜欢水晶,你可能想看看Jasper报表和美妙的iReport. 一旦在iReport的定义,你可以使您的报告从Jython的呼叫碧玉类.

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.760 (s). 10 q(s)