Vimeo integration to ios oauth 2.0



我们使用oauth 1.0集成了vimeo。现在它不起作用,必须使用 oauth 2.0。我找到了 https://github.com/nxtbgthng/OAuth2Client。但是不明白如何将它用于vimeo。

我们早期的代码是

OADataFetcher *fetcher;
    consumer = [[OAConsumer alloc]initWithKey:[dicVimeoInfo objectForKey:@"ConsumerKey"] secret:[dicVimeoInfo objectForKey:@"ConsumerSecret"]];
    NSURL *vimeoURL=[NSURL URLWithString:kVimeoRestURL];
    OAToken *token=[[OAToken alloc]initWithKey:[dicVimeoInfo objectForKey:@"AccessToken"] secret:[dicVimeoInfo objectForKey:@"AccessTokenSecret"]];
    request = [[OAMutableURLRequest alloc] initWithURL:vimeoURL
                                              consumer:consumer
                                                 token:token
                                                 realm:nil
                                     signatureProvider:nil];
    OARequestParameter* formatparameter = [OARequestParameter requestParameter:@"format" value:@"json"];
    OARequestParameter* methodParameter = [OARequestParameter requestParameter:@"method" value:@"vimeo.channels.getAll"];

    NSArray *params = [NSArray arrayWithObjects: formatparameter, methodParameter, nil];
    [request setParameters:params];
    [request setHTTPMethod:@"GET"];
    [request prepare];
    fetcher = [[OADataFetcher alloc] init];
    [fetcher fetchDataWithRequest:request
                         delegate:self
                didFinishSelector:@selector(requestTokenTicket:didFinishWithData:)
                  didFailSelector:@selector(requestTokenTicket:didFailWithError:)];

现在Vimeo已经转向oauth 2.0。我创建了应用程序并找到了"客户端标识符"、"请求令牌 URL"、"授权 URL"、"访问令牌 URL"。现在我不知道该怎么做。在oauth 1.0的早期,我获得了"访问令牌"和"令牌机密"。

编辑

我试过这个。我有单个用户的访问令牌。Vimeo 文档说我们发送类似"curl -H "Authorization: bearer <OAUTH_TOKEN>" https://api.vimeo.com"的标头,我该怎么做。

   consumer = [[OAConsumer alloc]initWithKey:@"456a8852ebd72760de4d2206bab3dad0db35a66b" secret:@"eb74abb5d1f38ad0bd570d24e4d1d0ee3a447534"];
    NSURL *url = [NSURL URLWithString:@"http://vimeo.com/api/rest/v2"];
    request = [[OAMutableURLRequest alloc] initWithURL:url
                                              consumer:consumer
                                                 token:nil
                                                 realm:nil
                                     signatureProvider:nil];
    [request setParameters: [NSArray arrayWithObjects: [OARequestParameter requestParameter:@"method" value:@"vimeo.channels.getAll"],[OARequestParameter requestParameter:@"format" value:@"json"], nil]];
    [request addValue:[NSString stringWithFormat:@"bearer %@",@"a75a63c0e0121b0704a4c98d6e209eb2"] forHTTPHeaderField:@"Authorization"];
    [request setHTTPMethod:@"POST"];
    OADataFetcher *fetcher = [[OADataFetcher alloc] init];
    [fetcher fetchDataWithRequest:request
                         delegate:self
                didFinishSelector:@selector(requestTokenTicket:didFinishWithData:)
                  didFailSelector:nil];

编辑我也尝试过没有客户端密钥和秘密。

NSURL *aUrl = [NSURL URLWithString: @"http://vimeo.com/api/rest/v2?format=json&method=vimeo.channels.getAll"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                                           cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                       timeoutInterval:30.0];
    [request addValue:[NSString stringWithFormat:@"bearer %@",@"7c7139ec99fa9e09f77dd2512780c301"] forHTTPHeaderField:@"Authorization"];
    [request setHTTPMethod:@"GET"];
    NSError *error = nil;
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error: &error];
    NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:&error];
    NSLog(@"Response : %@", JSONDictionary);

输出相同

Response : {
    err =     {
        code = 401;
        expl = "The consumer key passed was not valid.";
        msg = "Invalid consumer key";
    };
    "generated_in" = "0.0020";
    stat = fail;
}

谢谢。

您正在提供参数作为 JSON 对象的一部分,但client_credentials流实际上定义为使用Content-Type设置为 application/x-www-form-urlencoded 的普通 POST。因此,Vimeo 不会在其令牌端点识别有效请求。检查规范中的示例:https://www.rfc-editor.org/rfc/rfc6749#section-4.4.2

您使用的URL都是旧API的一部分。所有使用 oauth2 的请求都经过 https://api.vimeo.com 子域。您可以在 https://developer.vimeo.com/api/authentication 阅读更多信息

最新更新