我想使用ios-sdk
在Facebook上传视频我检查问题iPhone Facebook Video Upload中的讨论并尝试在我的应用程序中实现它
我尝试使用您的代码,但没有成功
这是代码
FBVideoUpload *upload = [[FBVideoUpload alloc] init];
upload.accessToken = facebookObj.accessToken;
upload.apiKey = fbAppKey;
upload.appSecret = fbAppSecret;
NSString *filePath = @"/Users/pratgupta/Library/Application Support/iPhone Simulator/4.1/Media/DCIM/100APPLE/IMG_0010.M4V";
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
data, @"",
@"test", @"title",
@"upload testing", @"description",
@"EVERYONE", @"privacy",
nil];
[upload startUploadWithURL:fileURL params:params delegate:self];
但是在日志中得到了错误,即 无法从访问令牌中检索会话密钥。
由于
if ([self sessionID] == nil) {
NSLog(@"Unable to retrieve session key from the access token);
return;
}
登录我正在使用此代码
fbPermissions = [[NSArray arrayWithObjects:
@"read_stream", @"offline_access", @"publish_stream",nil] retain];
facebookObj = [[Facebook alloc] initWithAppId:fbAppId];
[facebookObj authorize:fbPermissions delegate:self];
我可以从Facebook获取我的更新,因此会话就可以了。
你能告诉我我做错了吗?
修改
更改zoul建议的登录步骤后,我现在没有收到sessionID错误日志..我的请求现在发送到fb服务器但得到此响应
<?xml version="1.0" encoding="UTF-8"?>
<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
<error_code>100</error_code>
<error_msg>privacy must contains a valid privacy 'value'</error_msg>
<request_args list="true">
<arg>
<key>description</key>
<value>upload testing</value>
</arg>
<arg>
<key>privacy</key>
<value>EVERYONE</value>
</arg>
<arg>
<key>v</key>
<value>1.0</value>
</arg>
<arg>
<key>api_key</key>
<value>[here is my API key]</value>
</arg>
<arg>
<key>method</key>
<value>facebook.video.upload</value>
</arg>
<arg>
<key>session_key</key>
<value>c4ada192feb82e8f239a283d-555042146</value>
</arg>
<arg>
<key>sig</key>
<value>8255d4cc3838b278b26fbfc8c86818a3</value>
</arg>
<arg>
<key>title</key>
<value>test</value>
</arg>
</request_args>
</error_response>
Amit Battan
答案 0 :(得分:3)
隐私字典条目格式已更改:
NSDictionary * params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Sample video title", @"title",
@"Sample video description", @"description",
@"{\"value\": \"ALL_FRIENDS\"}", @"privacy",
nil];
Post对象的Graph API文档讨论了隐私对象:http://developers.facebook.com/docs/reference/api/post/
但这并不能解决视频没有出现在“我的视频”中,甚至不允许我的朋友看到它,如果他们有直接链接。视频页面上的“分享”按钮也被破坏了,所以我甚至无法将它发布到我的墙上。
答案 1 :(得分:1)
请参阅FBVideoUpload.h
中的评论:
请注意,此代码解析了 来自的访问令牌 Facebook类,非常脆弱,非官方和 可能很容易打破即将推出的SDK版本。还有 似乎只适用于较旧的弹出式身份验证和 不是使用app切换的新的。 (新的身份验证 scheme似乎导致了不同的身份验证令牌格式 我们无法解析。)
您的问题看起来像是在使用现代的应用切换认证方案。这导致了不同的访问令牌,因此视频上传黑客不起作用。切换到较旧的身份验证方案很简单,请参阅code in this branch(它会向forceOldStyleAuth
类添加Facebook
属性。
至于要通过上传传递的字典,以下是我的代码的外观:
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Sample video title", @"title",
@"Sample video description", @"description",
nil];
upload = [[FBVideoUpload alloc] init];
[upload setApiKey:kAPIKey];
[upload setAccessToken:facebook.accessToken];
[upload setAppSecret:kAppSecret];
[upload startUploadWithURL:movieURL params:params delegate:self];
这适合我。