Facebook iOS 上传视频“无法从访问令牌中检索会话密钥。”
Posted
技术标签:
【中文标题】Facebook iOS 上传视频“无法从访问令牌中检索会话密钥。”【英文标题】:Facebook iOS Upload Video "Unable to retrieve session key from the access token." 【发布时间】:2011-04-05 13:23:46 【问题描述】:我想使用 ios-sdk 在 facebook 上上传视频
我检查有问题的讨论 iPhone Facebook Video Upload 并尝试在我的应用程序中实现它
我尝试你的代码但没有成功
-
我下载你的代码https://github.com/zoul/facebook-ios-sdk
将 FBVideoUpload.h/m 类从您的 src 添加添加到我的项目中
在 FBConnect.h 中包含“FBVideoUpload.h”
然后我编码上传视频如下这是代码
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;
在 FBVideoUpload 类中
为了登录,我正在使用此代码
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>
阿米特巴坦
【问题讨论】:
【参考方案1】:隐私词典条目格式更改:
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/
但这并不能解决视频未显示在“我的视频”中的问题,甚至无法让我的朋友看到它(如果他们有直接链接)。视频页面上的分享按钮也坏了,所以我什至不能把它贴到我的墙上。
【讨论】:
是的,隐私问题现在已经解决了。但很奇怪为什么视频仍然没有显示***.com/questions/5565512 我遇到了与您昨天相同的视频问题,但现在可以解决了。也许 Facebook 的服务器出了点问题。【参考方案2】:见FBVideoUpload.h
中的cmets:
请注意,此代码解析 访问令牌来自 Facebook 类,它非常脆弱、非官方和 很容易与即将发布的 SDK 版本中断。还有它 似乎只适用于较旧的弹出式身份验证和 不是使用应用程序切换的新版本。 (新的认证 方案似乎导致不同的身份验证令牌格式 我们无法解析。)
您的问题看起来像是在使用现代的应用切换身份验证方案。这会导致不同的访问令牌,因此视频上传黑客不起作用。切换到旧的身份验证方案很容易,请参阅code in this branch(它向Facebook
类添加了一个forceOldStyleAuth
属性)。
至于上传时要传递的字典,我的代码如下所示:
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];
这对我有用。
【讨论】:
是的。 (显然,您必须先合并上述分支中的代码,否则没有forceOldStyleAuth
开头。)
现在没有出现错误日志但是没有上传视频....我得到了成功的响应但是当检查 facebook 时没有找到任何视频上传到这里。 . . . . 在日志中回复接收 received response..http://api-video.facebook.com/restserver.php
阅读original question下的讨论,你的应用类型可能有问题。
Yes :) 因为服务器不喜欢隐私设置,你应该尝试删除该行,看看是否上传成功。
您随视频传递的字典可能有误。我将使用我在代码中使用的字典来更新答案。以上是关于Facebook iOS 上传视频“无法从访问令牌中检索会话密钥。”的主要内容,如果未能解决你的问题,请参考以下文章
使用 iOS FBSDK v4 (multipart/form-data) 上传到 facebook 时编码视频的正确方法
操作无法完成。 (com.facebook.sdk 错误 5。)FACEBOOK 视频上传
iOS 我可以从 Graph api Facebook 获取上传进度吗?