示例#1
0
文件: views.py 项目: apalade/fingo
def _fb_user_to_auth(request, fb_user_cookie):
  prof.start('profile-save-fb-get-me')
  graph = facebook.GraphAPI(access_token=fb_user_cookie['access_token'])
  try:
    fb_user = graph.get_object("me")
  except facebook.GraphAPIError:
    # Clear cookies
    return None
  prof.stop('profile-save-fb-get-me')

  log.debug("fb_user_cookie %s fb_user_me: %s" % (str(fb_user_cookie), str(fb_user)))
  prof.start('profile-save-fb-new-user')
  (user, profile, new_user) = _check_and_save_user_atomic(fb_user)
  prof.stop('profile-save-fb-new-user')
  if new_user:
    # A new user, we also need to save to profile
    fb_user['photo'] = graph.request("me/picture", args={'type': 'large'}, binary=True)
    _populate_user_profile(user, profile, fb_user, fb_user_cookie)

    # Make friends in facebook for fingo too
    _save_friends(user, graph.get_connections("me", "friends")['data'])

    # Post it to wall
    # FIXME: this will fail if it comes from fb_app
    FacebookSystem.post_new_user_to_wall(request.COOKIES)

  return user