首页 文章

使用iOS SDK将照片发布到Facebook粉丝页面

提问于
浏览
9

我正在尝试使用iOS SDK和图形API将照片上传到我拥有的Facebook页面 . 我已经能够将照片上传到我自己的墙上 . 我也能够作为管理员在我的粉丝页面墙上发布消息并在我的粉丝页面上创建一个专辑,所以我认为我正在拨打正确的电话,但没有成功 .

这就是我目前正在做的事情 .

我正在登录使用

Facebook *fb = [[Facebook alloc] init];
self.facebook = fb;
[fb release];
NSArray *permissions =  [[NSArray arrayWithObjects:@"read_stream", @"offline_access", @"publish_stream", @"manage_pages", @"user_photos", @"friends_photos",nil] retain];
[facebook authorize:FB_APP_ID permissions:permissions delegate:self];
[permissions release];

登录后,我请求帐户

[facebook requestWithGraphPath:@"/me/accounts" andDelegate:self];

这些帐户将返回给我,并为每个页面和我拥有的应用程序提供访问权限 . 我使用一个简单的循环来解析帐户,为我希望上传照片的页面提供额外的access_token .

然后我将我的facebook对象的访问令牌设置为新的access_token .

facebook.accessToken = new_accessToken;

并尝试使用我的粉丝页面上传照片

UIImage *uploadImage = [UIImage imageNamed:@"t200.jpg"];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
               uploadImage, @"source", 
             @"test caption", @"message",             
             nil];


[facebook requestWithGraphPath:@"/me/photos" andParams:params
        andHttpMethod:@"POST" andDelegate:self];

我收到的回复是

{"error":{"type":"OAuthException","message":"(#1) An unknown error occurred"}}

这是facebook图形API中的错误吗?我也尝试使用标准HTTPS请求进行此调用,并获得相同的结果 .

5 回答

  • 1

    Ater成功登录Facebook,您可以通过请求@ "/me/accounts"获取列表FanPage并迭代到您想要的粉丝页面并通过向 @"/FBFanPageID?fields=access_token" 发出请求来请求其访问权限

    这个accessToken与你的facebook.accesstoken不同 .

    获取fanPage accessToken后,将其设置为facebook accessToken by

    [_facebook setAccessToken:_accessTokenForFanPage]; //这是necc步骤

    现在你可以通过 @"/FBFanPageID/photos" 上传到fanPage墙了

    请求 @"/FBFanPageID/albums" 粉丝专辑

    通过 @"/AlbumsID/photos" 上传到特定专辑

    为了上传这些图像,将使用param字典 .

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: IMAGE,@"source", IMAGECAPTION,@"message", nil];

  • 0

    旧的新闻,但...不确定粉丝页面部分,但你需要在“/ me / photos”之后添加“?access_token = ...”或者你最终用于图形API的任何内容都可以通过未知错误 . facebook sdk不会自动添加访问令牌,因此您必须自己添加 .

    [facebook requestWithGraphPath:[NSString stringWithFormat:@“/ me / photos?access_token =%@”,facebook.accessToken] andParams:params andHttpMethod:@“POST”andDelegate:self];

  • 0

    我有非常相似的代码,它的工作原理,唯一不同的是我在AppDelegate中创建Facebook实例 .

    QRSMAppDelegate * delegate =(QRSMAppDelegate *)[[UIApplication sharedApplication] delegate];

    if (![[delegate facebook] isSessionValid]) {
        [[delegate facebook] authorize:permissions];
    

    像你一样我最初在视图控制器中创建了Facebook实例,我发现了很多奇怪的错误 . 问题(我后来发现)是... Facebook通过将URL传递给Facebook类实例来响应,并且从外部到应用程序的唯一入口点是应用程序委托 . (查看Facebook sdk示例应用程序Hackbook)!

    • (BOOL)应用程序:(UIApplication *)应用程序openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    BOOL ret = [facebook handleOpenURL:url];
    

    ....返回(ret); }

    这里的问题当然是如果我只在我的应用程序的一小部分使用Facebook并远离应用程序代表(Facebook实例化要求您声明代表!

    在传递url时面对同样复杂的问题,实际上更容易在app委托中分配init视图控制器(Facebook委托)并将其传递给视图层次结构 .

  • 1

    不确定这一点,因为我对FB iOS集成很新,但我认为你不应该使用我/照片,而是xyz / photos,其中xyz是你要发布到的页面的ID .

  • 4

    您可以向您的粉丝页面发送电子邮件,并将附件照片显示为管理员发布的照片 .

    在粉丝页面上,选择编辑页面,然后选择移动设备 . 在移动页面上,Facebook将显示一个电子邮件地址,您可以使用该地址发布到您的粉丝页面 .

    在iOS中,我使用http://code.google.com/p/skpsmtpmessage/发送电子邮件

    你必须使用这个......

    svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-read-only

    下载代码

    除了主题行中的内容之外,不要在电子邮件中包含任何文本 . 否则它不会发布 .

相关问题