2017-06-18 10 views
1

YouTubeのAPIを使用して動画を挿入する際に、次のコードを使用しようとしています。ただし、クライアントの秘密ファイルを生成しましたが、oauth2.jsonファイルの生成方法を理解できませんでした。Oauth2.jsonファイルyoutubeのAPIを使用してプレイリストに動画を挿入中

import httplib2 
import os 
import sys 

from apiclient.discovery import build 
from apiclient.errors import HttpError 
from oauth2client.client import flow_from_clientsecrets 
from oauth2client.file import Storage 
from oauth2client.tools import argparser 
from oauth2client import tools 



# The CLIENT_SECRETS_FILE variable specifies the name of a file that contains 
# the OAuth 2.0 information for this application, including its client_id and 
# client_secret. You can acquire an OAuth 2.0 client ID and client secret from 

CLIENT_SECRETS_FILE = "my_client_secret.json" 

# This variable defines a message to display if the CLIENT_SECRETS_FILE is 
# missing. 
MISSING_CLIENT_SECRETS_MESSAGE = """ 
WARNING: Please configure OAuth 2.0 

To make this sample run you will need to populate the client_secrets.json 
file 
found at: 

%s 

with information from the Cloud Console 
https://cloud.google.com/console 

For more information about the client_secrets.json file format, please 
visit: 
https://developers.google.com/api-client- 
library/python/guide/aaa_client_secrets 
""" % os.path.abspath(os.path.join(os.path.dirname(__file__), 
         CLIENT_SECRETS_FILE)) 

# This OAuth 2.0 access scope allows for full read/write access to the 
# authenticated user's account. 
YOUTUBE_SCOPE = "https://www.googleapis.com/auth/youtube" 
YOUTUBE_API_SERVICE_NAME = "youtube" 
YOUTUBE_API_VERSION = "v3" 


def get_authenticated_service(): 
    flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_SCOPE, 
    message=MISSING_CLIENT_SECRETS_MESSAGE) 
    storage = Storage("%s-oauth2.json" % sys.argv[0]) 
    credentials = storage.get() 

    if credentials is None or credentials.invalid: 
     credentials = tools.run_flow(flow, storage) 

    return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
     http=credentials.authorize(httplib2.Http())) 


def add_video_to_playlist(youtube,videoID,playlistID): 
    add_video_request=youtube.playlistItem().insert(
    part="snippet", 
    body={ 
     'snippet': { 
     'playlistId': playlistID, 
     'resourceId': { 
       'kind': 'youtube#video', 
      'videoId': videoID 
     } 
    #'position': 0 
    } 
}).execute() 




if __name__ == '__main__': 
    youtube = get_authenticated_service() 
    add_video_to_playlist(youtube,"yszl2oxi8IY","PL2JW1S4IMwYubm06iDKfDsmWVB-J8funQ") 

OATUH2.JSONファイルを生成するにはどうすればよいですか? google API client guideから

答えて

1

ファイル<yourscript>-oauth2.jsonが資格情報(アクセストークン、リフレッシュトークン、IDトークン、トークンの有効期限などを...)を格納するために使用される

oauth2client.file.Storageクラス単一の 資格証明オブジェクトを格納し、取得します。このクラスでは、複数の プロセスとスレッドが1つのストアで動作できるようにロックをサポートしています。

ファイルが存在しないか、その中に資格情報が認証フローが実行された無効な場合:このファイルがすでに存在し、有効な資格情報が含まれている場合、

if credentials is None or credentials.invalid: 
    credentials = tools.run_flow(flow, storage) 

したがって、それはできませんこのファイルの既存のアクセストークン/リフレッシュトークンを使用してGoogle APIにヒットするため、最初のアクセストークンを取得するための認証コード(ユーザー登録およびユーザー受け入れスコープ経由)を要求するために必要です。

詳細はoauth2client.tools.run_flowhere

関連する問題