我正试图从我的iPhone应用程序发布到Facebook,它只是不起作用。
这就是我在做的事情:
if (![_facebook isSessionValid])
{
NSArray *permissions = [NSArray arrayWithObjects:
@"read_stream", @"publish_stream", @"offline_access",nil];
[facebook authorize:permissions delegate:self];
}
NSMutableDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
@"User Prompt Message", @"user_message_prompt",
@"http://www.mywebsite.com/", @"link",
@"http://mywebsite.com/wp-content/uploads/2011/05/iTunesArtwork.png", @"picture",
nil];
[facebook requestWithGraphPath:@"me/feed"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
我也试过
[self.facebook dialog:@“feed”andParams:params andDelegate:self];
但在任何一种情况下,我的应用程序都会在
中终止
- (FBRequest *)openUrl:(NSString *)url params:(NSMutableDictionary *)params httpMethod:(NSString *)httpMethod 代表:(ID)代表
或
- (void)对话框:(NSString *)动作 andParams:(NSMutableDictionary *)params andDelegate:(id )代表
取决于我使用此日志调用的方法:
* 由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:' - [__ NSCFDictionary setObject:forKey:]:发送到不可变对象'
的mutating方法
对我来说没有意义,因为使用的词典是可变的。
我做错了吗?任何帮助将不胜感激。
答案 0 :(得分:2)
对我来说没有意义,因为使用的词典是可变的。
不,他们不是。尽管您将返回的对象分配给NSMutableDictionary
变量,但您在此处创建NSDictionary
:
NSMutableDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
^
Here!
@"User Prompt Message", @"user_message_prompt",
@"http://www.mywebsite.com/", @"link",
@"http://mywebsite.com/wp-content/uploads/2011/05/iTunesArtwork.png", @"picture",
nil];
这应该是:
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:...];
这可能是导致崩溃的原因:
- 由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:' - [__ NSCFDictionary setObject:forKey:]:发送到不可变对象的变异方法'
因为Facebook API需要一个可变字典:
- (FBRequest*)requestWithGraphPath:(NSString *)graphPath
andParams:(NSMutableDictionary *)params
^
It needs to be mutable!
andHttpMethod:(NSString *)httpMethod
andDelegate:(id <FBRequestDelegate>)delegate;