2014-09-22 182 views
0

我剛剛接觸Google API,但取得了一些進展;我有一個獲取用戶視頻上傳列表的Django應用程序。這很好用!我從Google提供的文檔和示例中獲取了所有內容。從Python獲取YouTube用戶信息Python中的Google API(API v3)

我希望能夠獲得與其授權的YouTube帳戶相關的用戶個人資料信息(因爲我的網站上的用戶可能擁有多個YouTube帳戶,因此我需要將其分開) 。

這裏是什麼,我有一個簡化版的工作:

YOUTUBE_READONLY_SCOPE = "https://www.googleapis.com/auth/youtube.readonly" 
YOUTUBE_API_SERVICE_NAME = "youtube" 
YOUTUBE_API_VERSION = "v3" 

# added this to increase the scope 
GOOGLE_USER_INFO_SCOPE = "https://www.googleapis.com/auth/userinfo.profile" 

FLOW = flow_from_clientsecrets(
    CLIENT_SECRETS, 
    scope=[ YOUTUBE_READONLY_SCOPE, GOOGLE_USER_INFO_SCOPE ], 
    redirect_uri='http://127.0.0.1:8000/youtube/oauth2callback') 

@login_required 
def index(request): 
    storage = Storage(CredentialsModel, 'id', request.user, 'credential') 
    credential = storage.get() 

    http = httplib2.Http() 
    http = credential.authorize(http) 

    # gets a workable YouTube service! 
    service = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, http=http) 

    # how do I get the user name or email or other profile information here? 

閱讀this post後,我知道我不能只用userinfo = build('userinfo', "v2", http=http) ......但我作爲一個有點困惑了我接下來做。我讀this example,但似乎是使用不同的庫(我安裝了google-api-python-client)。

我需要安裝不同的庫(gdata庫)才能獲取用戶信息嗎?或者,用戶信息隱藏在其他服務上,我可以撥打build(例如Google+服務)?

+1

你是對的。您必須建立與Google+ API的連接才能獲取用戶信息。 – schillingt 2014-09-22 19:58:30

+0

我被帶到Google SignIn頁面,但我被重定向到一個包含以下鏈接的頁面 - http://127.0.0.1:8000/accounts/google/login/callback/?state=VZKqChhvHjMQebvWAm9ZAToxNTE5NjQwNzEx&code=4% 2FAADSCktyJ5WdX8BqyugMaR2FXTPrqQU3d7SalVHII00m5yBngjrgcLNDHL9Crikxb5gNLHIWgQ8XX2R4e54ILgg# 此頁面正在返回404.任何提示? 如果可能,我可以在Github或其他任何地方獲得完整的代碼或鏈接嗎? – wadhwa94 2018-02-26 10:40:14

回答

2

所以不得不添加一個額外的範圍,它是Google Plus API的一部分。這是我添加的範圍:

GOOGLE_PLUS_SCOPE = "https://www.googleapis.com/auth/plus.me" 
GOOGLE_PLUS_SERVICE_NAME = "plus" 
GOOGLE_PLUS_VERSION = "v1" 

這裏是我在同一時間做這兩個範圍:

FLOW = flow_from_clientsecrets(
    CLIENT_SECRETS, 
    scope=[ GOOGLE_PLUS_SCOPE, YOUTUBE_READONLY_SCOPE ], 
    redirect_uri='http://127.0.0.1:8000/youtube/oauth2callback') 

最後,這裏是我得到了關於登錄用戶的信息:

userservice = build(GOOGLE_PLUS_SERVICE_NAME, GOOGLE_PLUS_VERSION, http=http) 
userpeople = userservice.people() 
me = userpeople.get(userId="me").execute() 

print(me) 

有一點需要指出的是我必須啓用Google+ API以及Contacts API。我不知道爲什麼,但在聯繫人API被啓用之前,這不起作用。