def test_get_authorization_url(self): oauth_client = OAuth2Client(app=self.app, client=None, graph_version='v2.5') scope = ['email', 'base_foo'] params = { 'foo': 'bar' } auth_url = oauth_client.get_authorization_url( redirect_url='https://foo.bar', params=params, state='foo_state', scope=scope, ) expected_url = 'https://www.facebook.com/v2.5/dialog/oauth' self.assertIn(expected_url, auth_url) params = { 'client_id': 'app_id', 'redirect_uri': 'https://foo.bar', 'state': 'foo_state', 'sdk': 'facebook-python-sdk-{version}'.format(version=VERSION), 'scope': ','.join(scope), 'foo': 'bar', 'response_type': 'code', } for k, v in params.items(): self.assertIn('{k}={v}'.format(k=k, v=quote_plus(v)), auth_url)
def test_get_code_from_long_lived_access_token(self): fb_client = FakeOAuth2Client( http_status_code=200, body='{"code":"my_neat_code"}', headers=[], ) oauth_client = OAuth2Client(app=self.app, client=fb_client, graph_version='v2.5') code = oauth_client.get_code_from_long_lived_access_token( access_token='long_access_token', redirect_uri='foo_uri' ) self.assertEqual(code, 'my_neat_code') request = oauth_client.last_request expected_params = { 'redirect_uri': 'foo_uri', 'access_token': 'long_access_token', 'client_id': 'app_id', 'client_secret': 'secret', } self.assertEqual(request.endpoint, '/oauth/client_code') self.assertDictEqual(request.params, expected_params)
def test_get_access_token_from_code(self): fb_client = FakeOAuth2Client( http_status_code=200, body='{"access_token":"my_access_token","expires":"1422115200"}', headers=[], ) oauth_client = OAuth2Client(app=self.app, client=fb_client, graph_version='v2.12') access_token = oauth_client.get_access_token_from_code( code='bar_code', redirect_uri='foo_uri') self.assertIsInstance(access_token, AccessToken) self.assertEqual(str(access_token), 'my_access_token') expected_params = { 'code': 'bar_code', 'redirect_uri': 'foo_uri', 'access_token': 'app_id|secret', 'client_id': 'app_id', 'client_secret': 'secret', } request = oauth_client.last_request self.assertDictEqual(expected_params, request.params)
def test_get_long_lived_access_token(self): fb_client = FakeOAuth2Client( http_status_code=200, body='{"access_token":"my_access_token","expires":"1422115200"}', headers=[], ) oauth_client = OAuth2Client(app=self.app, client=fb_client, graph_version='v2.12') long_live_access_token = oauth_client.get_long_lived_access_token( access_token='foo_token') self.assertIsInstance(long_live_access_token, AccessToken) self.assertEqual(str(long_live_access_token), 'my_access_token') request = oauth_client.last_request expected_params = { 'access_token': 'app_id|secret', 'client_secret': 'secret', 'grant_type': 'fb_exchange_token', 'client_id': 'app_id', 'fb_exchange_token': 'foo_token' } self.assertDictEqual(request.params, expected_params)
def __init__(self, **kwargs): # type: (Any) -> None super(Facebook, self).__init__() self.config = { 'app_id': os.getenv(APP_ID_ENV_NAME, kwargs.get('app_id')), 'app_secret': os.getenv(APP_ID_ENV_NAME, kwargs.get('app_secret')), 'default_graph_version': kwargs.get('default_graph_version', DEFAULT_GRAPH_VERSION), 'default_access_token': kwargs.get('default_access_token'), } if not self.config['app_id']: raise FacebookSDKException( 'Required "app_id" key not supplied in config and could not find ' 'fallback environment variable "{app_id_env_name}"'.format( app_id_env_name=APP_ID_ENV_NAME, )) if not self.config['app_secret']: raise FacebookSDKException( 'Required "app_secret" key not supplied in config ' 'and could not find fallback environment variable "{app_secret_env_name}"' .format(app_secret_env_name=APP_SECRET_ENV_NAME, )) self.default_graph_version = self.config.get('default_graph_version') if self.config.get('default_access_token'): self.set_default_access_token( cast(Text, self.config.get('default_access_token'))) self.app = FacebookApp( app_id=cast(Text, self.config['app_id']), app_secret=cast(Text, self.config['app_secret']), ) self.client = FacebookClient( request_timeout=kwargs.get('default_request_timeout')) self.oauth_client = OAuth2Client( app=self.app, client=self.client, graph_version=self.default_graph_version, )
def test_debug_token(self): fb_client = FakeOAuth2Client( http_status_code=200, body='{"data":{"user_id":"444"}}', headers=[] ) oauth_client = OAuth2Client(app=self.app, client=fb_client, graph_version='v2.5') metadata = oauth_client.debug_token(access_token='foo_token') self.assertEqual(metadata.get('data').get('user_id'), '444') request = oauth_client.last_request expected_params = { 'input_token': 'foo_token', 'access_token': 'app_id|secret', } self.assertEqual(request.method, 'GET') self.assertEqual(request.endpoint, '/debug_token') self.assertEqual(request.graph_version, 'v2.5') self.assertDictEqual(request.params, expected_params)