2017-11-19 1 views
0

私はダイナミックなWebアプリプロジェクトのyoutube APIを通してYouTubeのビデオコメントを取得しようとしています。youtube apiでclient_secrets.jsonを呼び出す方法は?

マイコード:

private static int counter = 0; 
private static YouTube youtube; 

public static void getYoutubeOauth() throws Exception { 
    List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl"); 

    Credential credential = Auth.authorize(scopes, "commentthreads"); 
    youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).build(); 

    String videoId = "KIgxmV9xXBQ"; 

    // Get video comments threads 
    CommentThreadListResponse commentsPage = prepareListRequest(videoId).execute(); 

    while (true) { 
     handleCommentsThreads(commentsPage.getItems()); 

     String nextPageToken = commentsPage.getNextPageToken(); 
     if (nextPageToken == null) 
      break; 

     // Get next page of video comments threads 
     commentsPage = prepareListRequest(videoId).setPageToken(nextPageToken).execute(); 
    } 

    System.out.println("Total: " + counter); 
} 

private static YouTube.CommentThreads.List prepareListRequest(String videoId) throws Exception { 

    return youtube.commentThreads() 
        .list("snippet,replies") 
        .setVideoId(videoId) 
        .setMaxResults(100L) 
        .setModerationStatus("published") 
        .setTextFormat("plainText"); 
} 

private static void handleCommentsThreads(List<CommentThread> commentThreads) { 

    for (CommentThread commentThread : commentThreads) { 
     List<Comment> comments = Lists.newArrayList(); 
     comments.add(commentThread.getSnippet().getTopLevelComment()); 

     CommentThreadReplies replies = commentThread.getReplies(); 
     if (replies != null) 
      comments.addAll(replies.getComments()); 

     System.out.println("Found " + comments.size() + " comments."); 

     // Do your comments logic here 
     counter += comments.size(); 
    } 
} 

私はラインCredential credential = Auth.authorize(scopes, "commentthreads");

java.lang.NullPointerExceptionがFYI取得しています上記のコードを実行しながら:私はNullPointerExceptionが何であるかを知っています。すなわちstring n = null; if(n=="h");NullPointerExceptionの原因

原因はどこに配置するのか、どのようにコードを呼び出すのかわからないため、原因はclient_secrets.jsonというファイルによって否定されると思います。

私の現在のclient_secrets.jsonは、次のように、クライアントの秘密のJSONファイルを読み込むことができ/home/UserName/workspace/RemoteSystemsTempFiles/Duck/WebContent/WEB-INF/client_secrets.json

+0

スコープがnullの可能性があります。あなたはこの変数を監視しようとしましたか? –

+0

@ TalAvissar "この変数を守る"?あなたはどういう意味ですか?そしてplzは答えを歓迎します – IAintFixingIt

答えて

0

下に置かれているルックhere

を取るのGoogle APIで認証を使用する方法の詳細については

// Load client secrets. 
Reader clientSecretReader = new InputStreamReader(Auth.class.getResourceAsStream("/client_secrets.json")); 
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, clientSecretReader); 

+0

私は動的なweb-appを使用しています。私はサーブレットで実装しようとしていますので、私の場合は外部の.jsonを追加できませんファイルを自分のプロジェクト 'java resources'にコピーすると、外部ディレクトリからclient_secrets.jsonを読んでいることを表示できます。' Auth.class.getResourceAsStream( "/ home/hazrat/Documents/eclipse-jee-neon-3-linux-gtk -x86_64/eclipse/client_secrets.json ")'しかし、それは私のターミナルを通してこの正確な場所にアクセスすることができるヌルポイント認識を言います。そして、もしあなたが 'list スコープ'とは何かを説明し、何を置くべきかをplzが気にしないのですか? – IAintFixingIt

関連する問題