Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 3.07 KB

README.md

File metadata and controls

75 lines (53 loc) · 3.07 KB

gpsoauth

CI PyPI version repominder

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 = '[email protected]'
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.

  1. Go to https://accounts.google.com/EmbeddedSetup
  2. Log into your Google Account
  3. Click on "I agree" when prompted
  4. Obtain the value of the oauth_token cookie. For more details see the gpsoauth-java readme.

Then, perform the token exchange:

import gpsoauth

email = '[email protected]'
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

Contributing

See Contributing guidelines. This is an open-source project and all contributions are highly welcomed.