2010-11-23 115 views
9

我正尝试使用iOS SDK和图形API将照片上传至Facebook页面。我已经能够将照片上传到我自己的墙上。我还能够以管理员的身份向我的粉丝页面墙张贴信息,并在粉丝页面上创建相册,所以我认为我可以拨打正确的电话,但不能取得成功。使用iOS SDK发布照片至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请求进行此调用,并获得相同的结果。

回答

0

因为我对FB iOS集成颇为陌生,所以不应该使用我/照片,而是xyz/photos,其中xyz是要发布到的页面的ID。

+0

我试过它与页面ID,但仍然无法正常工作。使用我似乎是正确的,因为当你改变访问令牌时,你访问的是什么。所以我访问你的粉丝页面。 – leo83 2010-12-01 06:11:19

1

旧消息,但...不知道关于粉丝页面部分,但你需要在“/ me/photos”之后添加“?access_token = ...”,或者你最终使用图表API获取过去的内容未知的错误。 facebook sdk不会自动添加访问令牌,因此您必须自行完成。 [请求]使用GrouphPath:[NSString stringWithFormat:@“/ me/photos?access_token =%@”,facebook.accessToken] andParams:params andHttpMethod:@“POST”andDelegate:self];

+0

如果您查看SDK中提供的Facebook.m,您会发现SDK中的access_token被添加到参数中。但是,需要为粉丝页面获取不同的access_token。 – mahboudz 2012-02-21 23:10:00

4

亚特成功登录到Facebook上,你可以通过请求获取列表的fanpage @“/我/账户”,并遍历到你想要的粉丝专页,并通过使请求@"/FBFanPageID?fields=access_token"

此的accessToken要求其的accessToken不同于你的facebook.accesstoken。

获得的粉丝专页的accessToken后,将其设置为Facebook的的accessToken通过

[_facebook setAccessToken:_accessTokenForFanPage]; //这是NECC一步

现在,您可以通过@"/FBFanPageID/photos"

请求的粉丝专页相册中@"/FBFanPageID/albums"

上传到粉丝专页上墙

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

用于上传这些图像参数字典将被使用。

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

1

我有非常相似的代码和它的作品,这是稍有不同的唯一的事情是我在AppDelegate中创建Facebook的实例..

QRSMAppDelegate *委托=(QRSMAppDelegate *)[ UIApplication sharedApplication]委托];

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

像你我最初在视图控制器中创建Facebook实例,我出来了很多奇怪的错误。这个问题(我后来发现)是...... Facebook通过向Facebook类实例传递URL来响应,并且从唯一入口点到应用程序代表是应用程序代表。 (查看Facebook SDK示例程序Hackbook)!

- (BOOL)申请:(UIApplication的*)应用 的OpenURL:(NSURL *)网址 sourceApplication:(的NSString *)sourceApplication 注释:(ID)注释{

BOOL ret = [facebook handleOpenURL:url]; 

.... return(ret); }

当然这里的问题是什么,如果我只是在我的应用程序,并英里的应用程序委托远的一小部分使用Facebook(脸谱实例化要求你申报的委托!

比面子更确切地说同样在传递url的复杂问题上,它实际上更容易在应用程序代理中分配init视图控制器(Facebook委托),并将其传递到视图层次结构中。

0

您可以发送电子邮件到粉丝页面并获取附上的照片显示为管理员发布的照片​​

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

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

您必须使用此...

svn签http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-只读

下载代码

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

相关问题