Facebook访问令牌无效

时间:2011-10-06 06:57:55

标签: iphone facebook

我正在开发一个将视频发布到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。

1 个答案:

答案 0 :(得分:0)

无论您使用哪种库,视频上传都会使用一些过时的逻辑来处理上传。不需要存在分解会话密钥的整个方法。只需使用您通过视频上传请求从FB返回的访问令牌。此外,请确保您使用的是我们最新的SDK https://github.com/facebook/facebook-ios-sdk