             let url = "https://www.googleapis.com/youtube/v3/guideCategories"
             var params: [String: Any]
             if let token = pageToken {
-                params = ["key": self.API_KEY
-                    , "part": "snippet", "maxResults": 10, "regionCode": "JP", "pageToken": token]
+                params = ["part": "snippet", "maxResults": 10, "regionCode": "JP", "pageToken": token]
             } else {
-                params = ["key": self.API_KEY, "part": "snippet", "maxResults": 10, "regionCode": "JP"]
+                params = ["part": "snippet", "maxResults": 10, "regionCode": "JP"]
+            }
+            if !YouTubeAPIClient.isLoggedIn {
+                params["key"] = self.API_KEY
             }
 
             let request = self.request(url, method: .get, parameters: params, encoding: URLEncoding.default) { response in

import SwiftyJSON
import NXOAuth2Client
import MusicFeeder

extension XCDYouTubeClient {
    func fetchVideo(_ identifier: String) -> SignalProducer<XCDYouTubeVideo, NSError> {

    func searchChannel(_ query: String?, pageToken: String?) -> SignalProducer<(items: [Channel], nextPageToken: String?), NSError> {
        return SignalProducer { (observer, disposable) in
            let url = "https://www.googleapis.com/youtube/v3/search"
            var params: [String: Any] = ["part": "snippet",
                                   "maxResults": 10,
                                   "regionCode": "JP",
                                         "type": "channel",
                                  "channelType": "any"]
            if let token = pageToken {
                params["pageToken"] = token as Any?
            }
            if let q = query {
                params["q"] = q as Any?
            }
            if !YouTubeAPIClient.isLoggedIn {
                params["key"] = self.API_KEY
            }
            let request = self.request(url, method: .get, parameters: params, encoding: URLEncoding.default) { response in
                if let e = response.result.error {
