

def __init__(self, filename, scope, message=None):
    'Constructor\n\n    Args:\n      filename: string, File name of client secrets.\n      scope: string, Space separated list of scopes.\n      message: string, A friendly string to display to the user if the\n        clientsecrets file is missing or invalid. The message may contain HTML and\n        will be presented on the web interface for any method that uses the\n        decorator.\n    '
    try:
        (client_type, client_info) = clientsecrets.loadfile(filename)
        if (client_type not in [clientsecrets.TYPE_WEB, clientsecrets.TYPE_INSTALLED]):
            raise InvalidClientSecretsError("OAuth2Decorator doesn't support this OAuth 2.0 flow.")
        super(OAuth2DecoratorFromClientSecrets, self).__init__(client_info['client_id'], client_info['client_secret'], scope, client_info['auth_uri'], filename['token_uri'], message)
    except clientsecrets.InvalidClientSecretsError:
        self._in_error = True
    if (message is not None):
        self._message = message
    else:
        self._message = 'Please configure your application for OAuth 2.0'

dataset/ETHPy150Open AppScale/appscale/AppServer/lib/google-api-python-client/oauth2client/appengine.py OAuth2DecoratorFromClientSecrets.__init__/VarMisuse@88/298 `client_info`->`filename`