예제 #1
0
def authenticate(provider):
    res = socialauth.http_get_provider(
        provider,
        request.base_url,           # Callback URL
        request.args,               # GET parameters/query string
        current_app.secret_key,
        request.cookies.get('jwt')  # Currently stored token
    )

    if res.get('status') == 302:
        resp = make_response(redirect(res.get('redirect')))
        if res.get('set_token_cookie') is not None:
            resp.set_cookie('jwt', res.get('set_token_cookie'), httponly = True)

        return resp

    if res.get('status') == 200:
        resp = make_response(jsonify({ 'status': 'success' }))

        token = jwt.encode(
            { 'user_id': res.get('provider_user_id') },
            current_app.secret_key,
            algorithm = 'HS256'
        )
        resp.set_cookie('jwt', token, httponly = True)

        return resp

    # Something has gone very wrong. This should not happen.
    abort(400)
예제 #2
0
 def get_provider(self, args, token=None):
     return socialauth.http_get_provider("twitter", twitter_base_url, args, "sekret", token)
예제 #3
0
 def test_invalid_provider(self):
     with self.assertRaises(socialauth.InvalidUsage):
         socialauth.http_get_provider("foobar!", "", {}, "")
예제 #4
0
 def get_provider(self, args, token=None):
     return socialauth.http_get_provider("facebook", facebook_base_url, args, "sekret", None)