コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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,
        )
コード例 #6
0
    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)