【问题标题】:Capture access_token from facebook's server-side authentication in Django在 Django 中从 Facebook 的服务器端身份验证中捕获 access_token
【发布时间】:2012-04-14 23:34:50
【问题描述】:

我想捕获这个url返回的access_token(下)

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URI&client_secret=YOUR_APP_SECRET&code=CODE_GENERATED_BY_FACEBOOK

但是,如果我 HttpResponseredirect,它会将我带到一个空白页面,并打印 access_token 和到期秒数。我想捕获返回的 access_token 并在以后使用它。下面是我的代码

def fb_return(request):
  code = request.GET.get('code')
  fb_id = settings.FB_ID
  fb_s = settings.FB_SECRET    

  url = 'https://graph.facebook.com/oauth/access_token?client_id=%(id)s&redirect_uri=http://127.0.0.1:8000/facebook/return&client_secret=%(secret)s&code=%(code)s'%{'id':fb_id,'secret':fb_s,'code':code}
  return HttpResponseRedirect(url)

【问题讨论】:

    标签: python django facebook facebook-graph-api oauth


    【解决方案1】:

    您可以使用urllib 来执行请求:

    import urllib2
    url = 'https://graph.facebook.com/oauth/access_token?client_id=%(id)s&redirect_uri=http://127.0.0.1:8000/facebook/return&client_secret=%(secret)s&code=%(code)s'%{'id':fb_id,'secret':fb_s,'code':code}
    response = urllib2.urlopen(url)
    html = response.read()
    

    如果响应是json,可以这样解码:

    import simplejson
    json = response.read()
    dict = simplejson.load(json) 
    

    Here's a similar question dealing with this

    根据您的尝试,可能有更简单的方式与 Facebook 互动:

    • 如果你只需要做客户端的事情,你可以使用Facebook javascript SDK.
    • 如果您正在创建画布应用程序,您可以使用django-fandjango
    • 如果您正在创建一个使用 Facebook 登录的网站,您可以使用django-social-auth
    • 如果您希望服务器端与图形 api 交互,您可以使用facepy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2012-06-05
      相关资源
      最近更新 更多