从 Vimeo api 为 tvOS 获取外部播放器 URL
Get external player URL from Vimeo api for tvOS
我想使用 vimeo 为 AppleTV 应用托管视频。我意识到我需要一个专业账户来做我想做的事,但目前只是想做一个 POC。
我需要实现的是检索 1 小时后过期的我的私人视频的 url,并且我希望使用我的凭据对应用程序进行身份验证,而不是让用户必须登录(就像有应用程序,然后他们就可以观看视频了)。
我使用的代码如下,常量设置为:
kVimeoToken 是我在 vimeo 上为应用程序创建的访问令牌,我已将 vimeo api 导入到我的项目中。
-(NSString*) getVimeoUrls2 {
VIMClient *client = [[VIMClient alloc] initWithDefaultBaseURL];
AFJSONRequestSerializer *serializer= [AFJSONRequestSerializer serializer];
NSString *token = kVimeoToken;
//[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/vnd.vimeo.*+json; version=3.2" forHTTPHeaderField:@"Accept"];
[serializer setValue:[NSString stringWithFormat:@"Bearer %@", token] forHTTPHeaderField:@"Authorization"];
client.requestSerializer = serializer;
__block NSString *str= nil;
[client requestURI:@"/me" completionBlock:^(VIMServerResponse *response, NSError *error)
{
id JSONObject = response.result;
NSLog(@"JSONObject: %@", JSONObject);
NSLog(@"Error: %@", [error localizedDescription]);
str = [[NSString alloc] initWithData:JSONObject encoding:NSUTF8StringEncoding];
}];
return str;
}
我得到的只是一个空字符串,知道我做错了什么吗?
如果我更改访问令牌使其不正确,那么我会收到一条错误消息 {"error":"You must provide a valid authenticated access token."},因此看来我的身份验证正常。我还尝试了其他一些端点,但所有端点都以空字符串结束。
我尝试了两种不同的方法,结果相同...即 none 或空字符串。
我在 vimeo 论坛上发布了问题,并获得了这两个链接:
developer.vimeo.com/api/authentication#单用户
github.com/vimeo/VIMNetworking#轻量级使用
上面代码的日志输出如下:
2016-01-09 08:13:26.091 tvOSShortGame[68357:91090409] 服务器启动 (/me/watched/videos)
2016-01-09 08:13:26.461 tvOSShortGame[68357:91090448] 服务器成功 0.370109 秒 (/me/watched/videos)
..如果我将端点更改为 /xxx(强制出错)
2016-01-09 08:07:28.826 tvOSShortGame[67829:91039056] 服务器启动 (/xxx)
2016-01-09 08:07:29.003 tvOSShortGame[67829:91039045] 服务器故障 0.177531 秒 (/xxx)
2016-01-09 08:07:29.003 tvOSShortGame[67829:91039460] JSON对象:(空)
2016-01-09 08:07:29.003 tvOSShortGame[67829:91039460] 错误:请求失败:未找到 (404)
其他端点得到相同的结果,报告成功但没有返回 JSON 对象。
感谢任何帮助。
我终于通过使用我在 Vimeo 论坛之一上看到的 Postman 来完成这项工作。它以多种语言生成正确的代码,并显示结果 JSON 以便您验证您的端点。
希望有人觉得有用。
//Obj C version
NSDictionary *headers = @{ @"authorization": @"Bearer MY_VIMEO_TOKEN",
@"cache-control": @"no-cache",
@"postman-token": @"MY_POSTMAN_TOKEN" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.vimeo.com/videos/116999999"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
//Swift version
let headers = [
"authorization": "Bearer MY_VIMEO_TOKEN",
"cache-control": "no-cache",
]
var request = NSMutableURLRequest(URL: NSURL(string: "https://api.vimeo.com/videos/116999999")!,
cachePolicy: .UseProtocolCachePolicy,
timeoutInterval: 10.0)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = headers
var str = ""
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? NSHTTPURLResponse
str = self.parseJSON(data!)
}
})
dataTask.resume()
我想使用 vimeo 为 AppleTV 应用托管视频。我意识到我需要一个专业账户来做我想做的事,但目前只是想做一个 POC。 我需要实现的是检索 1 小时后过期的我的私人视频的 url,并且我希望使用我的凭据对应用程序进行身份验证,而不是让用户必须登录(就像有应用程序,然后他们就可以观看视频了)。
我使用的代码如下,常量设置为:
kVimeoToken 是我在 vimeo 上为应用程序创建的访问令牌,我已将 vimeo api 导入到我的项目中。
-(NSString*) getVimeoUrls2 {
VIMClient *client = [[VIMClient alloc] initWithDefaultBaseURL];
AFJSONRequestSerializer *serializer= [AFJSONRequestSerializer serializer];
NSString *token = kVimeoToken;
//[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/vnd.vimeo.*+json; version=3.2" forHTTPHeaderField:@"Accept"];
[serializer setValue:[NSString stringWithFormat:@"Bearer %@", token] forHTTPHeaderField:@"Authorization"];
client.requestSerializer = serializer;
__block NSString *str= nil;
[client requestURI:@"/me" completionBlock:^(VIMServerResponse *response, NSError *error)
{
id JSONObject = response.result;
NSLog(@"JSONObject: %@", JSONObject);
NSLog(@"Error: %@", [error localizedDescription]);
str = [[NSString alloc] initWithData:JSONObject encoding:NSUTF8StringEncoding];
}];
return str;
}
我得到的只是一个空字符串,知道我做错了什么吗? 如果我更改访问令牌使其不正确,那么我会收到一条错误消息 {"error":"You must provide a valid authenticated access token."},因此看来我的身份验证正常。我还尝试了其他一些端点,但所有端点都以空字符串结束。
我尝试了两种不同的方法,结果相同...即 none 或空字符串。
我在 vimeo 论坛上发布了问题,并获得了这两个链接:
developer.vimeo.com/api/authentication#单用户 github.com/vimeo/VIMNetworking#轻量级使用
上面代码的日志输出如下:
2016-01-09 08:13:26.091 tvOSShortGame[68357:91090409] 服务器启动 (/me/watched/videos) 2016-01-09 08:13:26.461 tvOSShortGame[68357:91090448] 服务器成功 0.370109 秒 (/me/watched/videos)
..如果我将端点更改为 /xxx(强制出错)
2016-01-09 08:07:28.826 tvOSShortGame[67829:91039056] 服务器启动 (/xxx) 2016-01-09 08:07:29.003 tvOSShortGame[67829:91039045] 服务器故障 0.177531 秒 (/xxx) 2016-01-09 08:07:29.003 tvOSShortGame[67829:91039460] JSON对象:(空) 2016-01-09 08:07:29.003 tvOSShortGame[67829:91039460] 错误:请求失败:未找到 (404)
其他端点得到相同的结果,报告成功但没有返回 JSON 对象。
感谢任何帮助。
我终于通过使用我在 Vimeo 论坛之一上看到的 Postman 来完成这项工作。它以多种语言生成正确的代码,并显示结果 JSON 以便您验证您的端点。
希望有人觉得有用。
//Obj C version
NSDictionary *headers = @{ @"authorization": @"Bearer MY_VIMEO_TOKEN",
@"cache-control": @"no-cache",
@"postman-token": @"MY_POSTMAN_TOKEN" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.vimeo.com/videos/116999999"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
//Swift version
let headers = [
"authorization": "Bearer MY_VIMEO_TOKEN",
"cache-control": "no-cache",
]
var request = NSMutableURLRequest(URL: NSURL(string: "https://api.vimeo.com/videos/116999999")!,
cachePolicy: .UseProtocolCachePolicy,
timeoutInterval: 10.0)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = headers
var str = ""
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? NSHTTPURLResponse
str = self.parseJSON(data!)
}
})
dataTask.resume()