@engine<EOL><INDENT>def register_app(self, name, redirect_uri, callback):<DEDENT>
client_id = self._generate_token()<EOL>client_secret = self._generate_token(<NUM_LIT:64>)<EOL>yield Task(self.data_store.store, '<STR_LIT>', client_id=client_id,<EOL>client_secret=client_secret, name=name,<EOL>redirect_uri=redirect_uri)<EOL>callback({'<STR_LIT>':client_id, '<STR_LIT>':client_secret})<EOL>
register_app takes an application name and redirect_uri
It generates client_id (client_key) and client_secret,
then stores all of the above in the data_store,
and returns a dictionary containing the client_id and client_secret.