Example #1
0
    def _get_current_site_user(self):
        cookies = request.cookies
        cookie = fblib.get_user_from_cookie(cookies, 
                                            h.fb_app_id(), 
                                            h.fb_secret())
        user_id = None
        fb_user_id = None
        fb_access_token = None
        user = None

        if cookie:
            fb_user_id = h.to_i(cookie['uid'])
            fb_access_token = cookie['access_token']
            fb_access_token_expiry = h.to_i(cookie['expires'])
            last_login = int(time.time())
            user = User.find(fb_user_id=fb_user_id).first() if fb_user_id else None
            if not user:
                user = User.factory(fb_user_id, 
                                    fb_access_token=fb_access_token, 
                                    fb_access_token_expiry=fb_access_token_expiry, 
                                    last_login=last_login)
            try:
                user.update_fb_access_token(fb_access_token, fb_access_token_expiry)
            except fblib.GraphAPIError, e:
                log.warning('caught graph api error while updating access token, flushing cookie: %r', e)
                request.cookies.pop('fbs_%s' % h.fb_app_id(), None)

            user_id = user.user_id
Example #2
0
def parse_api_access_token(api_access_token):
    """
    See generate_api_access_token()
    """
    parts = api_access_token.split('.')
    if not parts or len(parts) != 3:
        raise ApiSecurityException('Invalid API access token: %s' % api_access_token)
    return parts[0], h.to_i(parts[1]), parts[2]
Example #3
0
def process_fb_user_data(fb_data, fb_access_token, fb_access_token_expiry):
    fb_user_id = h.to_i(fb_data['id'])
    email = fb_data['email']
    first_name = fb_data['first_name']
    last_name = fb_data['last_name']

    # resolve the user
    last_login = int(time.time())
    user = User.factory(fb_user_id, 
                        fb_access_token=fb_access_token, 
                        fb_access_token_expiry=fb_access_token_expiry, 
                        email=email,
                        last_login=last_login)

    user.update_fb_access_token(fb_access_token, 
                                fb_access_token_expiry,
                                commit=False)
    user.update_user_fields(field_values=fb_data, commit=True)
    return user