Python client library for Google Play Services OAuth.
gpsoauth allows python code to use the "master token" flow that KB Sriram described at
http://sbktech.blogspot.com/2014/01/inside-android-play-services-magic.html.
import gpsoauth email = 'example@gmail.com' password = 'my-password' android_id = '0123456789abcdef' master_response = gpsoauth.perform_master_login(email, password, android_id) master_token = master_response['Token'] auth_response = gpsoauth.perform_oauth( email, master_token, android_id, service='sj', app='com.google.android.music', client_sig='...') token = auth_response['Auth']
This can be useful when writing code that poses as a Google app, like gmusicapi does here.
Many thanks to Dima Kovalenko for reverse engineering the EncryptedPasswd signature in https://web.archive.org/web/20150814054004/http://codedigging.com/blog/2014-06-09-about-encryptedpasswd/.
For an explanation of recent changes, see the changelog.
Alternative flow
There is an alternative login flow if you are experiencing BadAuthentication errors.
- Go to https://accounts.google.com/EmbeddedSetup
- Log into your Google Account
- Click on "I agree" when prompted. The page may show a loading screen forever; ignore it and move on to the next step.
- Obtain the value of the
oauth_tokencookie. For more details see the gpsoauth-java readme.
Then, perform the token exchange:
import gpsoauth email = 'example@gmail.com' android_id = '0123456789abcdef' token = '...' # insert the oauth_token here master_response = gpsoauth.exchange_token(email, token, android_id) master_token = master_response['Token'] # if there's no token check the response for more details auth_response = gpsoauth.perform_oauth( email, master_token, android_id, service='sj', app='com.google.android.music', client_sig='...') token = auth_response['Auth']
Ports
- Typescript: https://github.com/billgreenwald/gpsoauth-js
- C#: https://github.com/vemacs/GPSOAuthSharp
- Ruby: https://github.com/bryanmytko/gpsoauth
- Java: https://github.com/svarzee/gpsoauth-java
- C++: https://github.com/dvirtz/gpsoauth-cpp and https://github.com/Iciclelz/gpsoauthclient
Contributing
See Contributing guidelines. This is an open-source project and all contributions are highly welcomed.