查找用户是否使用Youtube数据API订阅了YouTube频道

时间:2017-06-23 05:58:17

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

我正在开发一个应用程序,用户可以在我的应用程序中订阅各种渠道。因此,为了保存api请求,我想知道用户是否已经订阅了youtube频道。在研究的过程中,我找到了一些代码并根据我的要求进行了修改:

static public boolean checkIfUserAlreadySubscribed(String channelyoutubeid) {
    SubscriptionListResponse response = null;
    try {
        HashMap<String, String> parameters = new HashMap<>();
        parameters.put("part", "snippet,contentDetails");
        parameters.put("forChannelId", channelyoutubeid);
        parameters.put("mine", "true");

        YouTube.Subscriptions.List subscriptionsListForChannelIdRequest = MainActivity
                .mService.subscriptions().list(parameters.get("part").toString());
        if (parameters.containsKey("forChannelId") && parameters.get("forChannelId") != "") {
            subscriptionsListForChannelIdRequest.setForChannelId(parameters
                    .get("forChannelId").toString());
        }

        if (parameters.containsKey("mine") && parameters.get("mine") != "") {
            boolean mine = (parameters.get("mine") == "true") ? true : false;
            subscriptionsListForChannelIdRequest.setMine(mine);
        }

        response = subscriptionsListForChannelIdRequest.execute();

    } catch (IOException e) {
        e.printStackTrace();
    }
    if (response != null) {
        //What should i do here
    } else {
        //whta should i pass
    }
}

在执行我的代码时,无论用户是否已订阅,响应值始终不为空。任何人都建议我做什么?

1 个答案:

答案 0 :(得分:0)

要检索用户已订阅的频道,您可以尝试使用mine参数设置为true的{​​{3}}。成功的请求将返回包含活动资源的响应正文:

"contentDetails": {
    "subscription": {
      "resourceId": {
        "kind": string,
        "channelId": string,
      }
    }
}

contentDetails.subscription.resourceId.channelId是YouTube用于唯一标识用户订阅的频道的ID。