【问题标题】:How to like/unlike and subscribe a YouTube video from a android app如何喜欢/不喜欢和订阅 Android 应用中的 YouTube 视频
【发布时间】:2018-09-11 10:32:16
【问题描述】:

我正在尝试创建一个 YouTube 视频 Android 应用程序。目前播放视频和获取播放列表没有问题,因为有此示例。但我无法找到任何好的参考 like/unlike并在 YouTube 中订阅活动

那么如何从安卓应用中点赞/取消点赞和订阅 YouTube 视频?

我们将不胜感激。

【问题讨论】:

    标签: android youtube-api youtube-data-api android-youtube-api


    【解决方案1】:

    我认为您无法在自己的应用程序中执行此操作。

    您必须通过 YouTube 应用将应用程序的用户重定向到他想要订阅的频道。

    您可以通过 YouTube API 使用此方法:createChannelIntent (link)。从那里,您的用户将能够订阅该频道,因为它将在 YouTube 应用中打开。

    确保在 (link) 之前安装了 YouTube 应用! :)

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      您需要使用 YouTube 数据 API。 Here 你可以阅读如何喜欢/不喜欢视频。

      【讨论】:

        【解决方案3】:

        也许你可以使用这个代码:

        // Sample Java code for user authorization
        
        import com.google.api.client.auth.oauth2.Credential;
        import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
        import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
        import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
        import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
        import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
        import com.google.api.client.googleapis.json.GoogleJsonResponseException;
        import com.google.api.client.http.HttpTransport;
        import com.google.api.client.json.jackson2.JacksonFactory;
        import com.google.api.client.json.JsonFactory;
        import com.google.api.client.util.store.FileDataStoreFactory;
        
        import com.google.api.services.youtube.YouTubeScopes;
        import com.google.api.services.youtube.model.*;
        import com.google.api.services.youtube.YouTube;
        
        import java.io.IOException;
        import java.io.InputStream;
        import java.io.InputStreamReader;
        import java.util.Arrays;
        import java.util.Collection;
        import java.util.HashMap;
        import java.util.List;
        
        
        public class ApiExample {
        
            /** Application name. */
            private static final String APPLICATION_NAME = "API Sample";
        
            /** Directory to store user credentials for this application. */
            private static final java.io.File DATA_STORE_DIR = new java.io.File(
            System.getProperty("user.home"), ".credentials/java-youtube-api-tests");
        
            /** Global instance of the {@link FileDataStoreFactory}. */
            private static FileDataStoreFactory DATA_STORE_FACTORY;
        
            /** Global instance of the JSON factory. */
            private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
        
            /** Global instance of the HTTP transport. */
            private static HttpTransport HTTP_TRANSPORT;
        
            /** Global instance of the scopes required by this quickstart.
             *
             * If modifying these scopes, delete your previously saved credentials
             * at ~/.credentials/drive-java-quickstart
             */
            private static final Collection<String> SCOPES = Arrays.asList("YouTubeScopes.https://www.googleapis.com/auth/youtube.force-ssl YouTubeScopes.https://www.googleapis.com/auth/youtubepartner");
        
            static {
                try {
                    HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
                    DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
                } catch (Throwable t) {
                    t.printStackTrace();
                    System.exit(1);
                }
            }
        
            /**
             * Creates an authorized Credential object.
             * @return an authorized Credential object.
             * @throws IOException
             */
            public static Credential authorize() throws IOException {
                // Load client secrets.
                InputStream in = ApiExample.class.getResourceAsStream("/client_secret.json");
                GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader( in ));
        
                // Build flow and trigger user authorization request.
                GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                    .setDataStoreFactory(DATA_STORE_FACTORY)
                    .setAccessType("offline")
                    .build();
                Credential credential = new AuthorizationCodeInstalledApp(
                flow, new LocalServerReceiver()).authorize("user");
                System.out.println(
                    "Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
                return credential;
            }
        
            /**
             * Build and return an authorized API client service, such as a YouTube
             * Data API client service.
             * @return an authorized API client service
             * @throws IOException
             */
            public static YouTube getYouTubeService() throws IOException {
                Credential credential = authorize();
                return new YouTube.Builder(
                HTTP_TRANSPORT, JSON_FACTORY, credential)
                    .setApplicationName(APPLICATION_NAME)
                    .build();
            }
        
            public static void main(String[] args) throws IOException {
        
                YouTube youtube = getYouTubeService();
        
                try {
                    HashMap<String, String> parameters = new HashMap<>();
                    parameters.put("id", "E6UTz_Doic8");
                    parameters.put("rating", "like");
        
                    YouTube.Videos.Rate videosRateRequest = youtube.videos().rate(parameters.get("id").toString(), parameters.get("rating").toString());
                    videosRateRequest.execute();
        
        
                } catch (GoogleJsonResponseException e) {
                    e.printStackTrace();
                    System.err.println("There was a service error: " + e.getDetails().getCode() + " : " + e.getDetails().getMessage());
                } catch (Throwable t) {
                    t.printStackTrace();
                }
            }
        }
        以后可以更完整, This

        【讨论】:

          猜你喜欢
          • 2016-07-10
          • 1970-01-01
          • 2020-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 1970-01-01
          • 2015-04-29
          相关资源
          最近更新 更多