开发者

How to Save My User Account and Password in Google App Engine Launcher?

I'm using the Google App Engine Launcher to deploy my app to the GAE serve开发者_StackOverflow中文版rs. Is there a way to save my user account and password so I don't have to type it in every time I redeploy?

I'm still in the learning stages of using GAE so typing my 16 odd character password gets tiresome when I redeploy 15+ times per evening.


You can make a .bat file that has the following text:

echo <password> | c:\python25\python.exe "C:\Program Files\Google\google_appengine\appcfg.py" --email=username --passin update <directory of app on your pc>

(According to GAE docs you cannot specify the password as a command line option)


Use oauth to save an OAuth2 token so you don't need to keep re-typing your password.


The accepted solution didn't work for me. Using pipes did

echo <password> | c:\python25\python.exe "C:\Program Files\Google\google_appengine\appcfg.py" --email=username --passin update <directory of app on your pc>


appcfg already does this for you. Per the docs:

appcfg.py gets the application ID from the app.yaml file, and prompts you for the email address and password of your Google account. After successfully signing in with your account, appcfg.py stores a "cookie" so that it does not need to prompt for a password on subsequent attempts.

If this isn't occurring for you, you might want to try deleting any .appcfg* config files.


Other tips & trick: using command line as below:

To get appcfg.py to accept --password on the command line instead of being prompted for it:

Change: *appengine/google_appengine/google/appengine/tools/appcfg.py*

add the following in the parser.add_option section:

parser.add_option("-p","--password", action="store", dest="password",
                  metavar="PASSWORD", default=None,
                  help="The password")

Then modify the GetUserCredentials function:

def GetUserCredentials():
  """Prompts the user for a username and password."""
  email = self.options.email
  if email is None:
    email = self.raw_input_fn("Email: ")

  password = self.options.password
  if password is None:
    password = self.raw_input_fn("Password: ")

#      password_prompt = "Password for %s: " % email
#      if self.options.passin:
#        password = self.raw_input_fn(password_prompt)
#      else:
#        password = self.password_input_fn(password_prompt)

  return (email, password)

That's it, now you can call:

appcfg.py update demos/guestbook --email=email@gmail.com --password=xxxx

Ref: http://samalolo.blogspot.com/2009/04/appcfgpy-tweak-to-allow-passing.html


I just wanted to say thank you to Friar Broccoli, it's exactly what I was looking for. To clarify for other beginners like myself, my final batch file ended up looking like the following,

c:\python27\pythonw.exe "C:\Program Files (x86)\Google\google_appengine\appcfg.py" --oauth2 update "C:\Users\[username]\[directory]\app.yaml"

Worked perfectly, wish this solution was higher up.


For windows 7, .appcfg_cookies under C:\Users\username\.appcfg_cookies


You could write a command line script that executes appcfg.py to do this.

You can specify the email to use with the --email= command line parameter.

You can pass in the password from stdin by using the --passin parameter.


It's amazingly simple. Just put this in a batch file:

appcfg.py --oauth2  update  "X:\local\path\to\your\app.yaml\file" 

The first time you run it google will authenticate, after that it's all automatic.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜