我正在开发一个将视频发布到Facebook的应用程序。 我已在Facebook上注册此应用程序,收到APIkey,APIsecret,该应用程序成功通过身份验证并接收访问令牌。这是我的身份验证代码:
m_Facebook = [[Facebook alloc] init];
[m_Facebook logout:self];
m_FacebookUploader = [[FBVideoUpload alloc]init];
NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", @"offline_access",@"read_stream",nil];
m_Facebook.forceOldStyleAuth = YES;
[m_Facebook authorize:kApiKey permissions:permissions delegate:self];
但是,在尝试上传视频时,FBVideoUpload类会尝试将访问令牌分成几个部分:
- (NSString*) sessionID
{
NSArray *components = [accessToken componentsSeparatedByString:@"|"];
NSLog(@"components: %@", components);
return [components count] < 2 ? nil : [components objectAtIndex:1];
}
根据http://developers.facebook.com/docs/authentication/,访问令牌应包含多个以“|”分隔的组件,但我在身份验证时收到的组件不包含由“|”分隔的多个组件。我收到的access_token看起来如下:
AAA*GXJapke*BAGRlZC7aBLhiZB*MUEV*AAF6*ZBhZBw*0ER1M*vkXlRUZCwO*czfgs*wHbnA*BcTU*VrPZC*Yw3p*JmCIMZ*xSnCP*GqPRWZALgZDZ*
(我用“*”替换了一些符号)
以下是我上传视频的代码:
[m_FacebookUploader setApiKey:kApiKey];
[m_FacebookUploader setAccessToken:m_Facebook.accessToken];
[m_FacebookUploader setAppSecret:kApiSecret];
[m_FacebookUploader startUploadWithURL:url params:params delegate:self];
我在这里收到错误:
if ([self sessionID] == nil) {
NSLog(@"Unable to retrieve session key from the access token.");
return;
}
这并不奇怪,因为sessionID确实返回了nil。
答案 0 :(得分:0)
无论您使用哪种库,视频上传都会使用一些过时的逻辑来处理上传。不需要存在分解会话密钥的整个方法。只需使用您通过视频上传请求从FB返回的访问令牌。此外,请确保您使用的是我们最新的SDK https://github.com/facebook/facebook-ios-sdk