code: def auth_request_url(self, client_id=None, redirect_uris="urn:ietf:wg:oauth:2.0:oob",
                           scopes=__DEFAULT_SCOPES, force_login=False):
          
          if client_id is None:
              client_id = self.client_id
          else:
              if os.path.isfile(client_id):
                  with open(client_id, 'r') as secret_file:
                      client_id = secret_file.readline().rstrip()
  
          params = dict()
          params['client_id'] = client_id
          params['response_type'] = "code"
          params['redirect_uri'] = redirect_uris
          params['scope'] = " ".join(scopes)
          params['force_login'] = force_login
          formatted_params = urlencode(params)
          return "".join([self.api_base_url, "/oauth/authorize?", formatted_params])
docs: Returns the url that a client needs to request an oauth grant from the server.
          
          To log in with oauth, send your user to this URL. The user will then log in and
          get a code which you can pass to log_in.
          
          scopes are as in `log_in()`_, redirect_uris is where the user should be redirected to
          after authentication. Note that redirect_uris must be one of the URLs given during
          app registration. When using urn:ietf:wg:oauth:2.0:oob, the code is simply displayed,
          otherwise it is added to the given URL as the "code" request parameter.
          
          Pass force_login if you want the user to always log in even when already logged
          into web mastodon (i.e. when registering multiple different accounts in an app).