Facebook iOS SDK - 向 facebook 用户发送应用请求

Posted

技术标签:

【中文标题】Facebook iOS SDK - 向 facebook 用户发送应用请求【英文标题】:Facebook iOS SDK - Sending a facebook user an app request 【发布时间】:2011-06-23 11:06:15 【问题描述】:

我正在尝试使用 facebook ios SDK 通过 facebook 发送应用请求,我使用以下代码:

NSString *message = [[NSString alloc] initWithFormat:@"blah blah blah"];
NSString *data = [[NSString alloc] initWithFormat:@"blah blah blah"];

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:message, @"message", data, @"data", nil];
[_facebook requestWithGraphpath:[NSString stringWithFormat:@"%@/apprequests",userID] andParams:params andHttpMethod:@"POST" andDelegate:self];

[message release];
[data release];

这给了我以下错误:

Error: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x788c5b0 error=<CFBasicHash 0x788c080 [0x1bf53e0]>type = mutable dict, count = 2,
entries =>
    2 : <CFString 0x788b560 [0x1bf53e0]>contents = "type" = <CFString 0x788c3f0 [0x1bf53e0]>contents = "OAuthException"
    3 : <CFString 0x788c560 [0x1bf53e0]>contents = "message" = <CFString 0x788c480 [0x1bf53e0]>contents = "(#200) Invalid Request: There was a problem with the parameters of the request. Body of an error/warning message. Title is: Invalid Request"

那么有没有人在这方面取得了成功,或者你知道使用 facebook iOS SDK 向 facebook 用户发送请求的方法吗?

谢谢

【问题讨论】:

你有解决办法吗?我也在寻找同样的东西。谢谢\ 【参考方案1】:

您可以使用 Facebook SDK 轻松发送应用请求

要提出应用请求,请确保遵循以下步骤

1)确保您已在您的应用程序文件夹中添加了最新的 Facebook SDK

如果没有,您可以从this链接下载。

现在您只需在项目文件夹中添加 FBConnect 文件夹。

2)然后确保您已将您的 iphone 应用注册为“Facebook 上的应用”类型选择方式 您的应用在基本应用设置下与 Facebook 集成。

如果没有,你可以这样做here。

NSString *friendId=@"FacebookId Of Your Friends";

NSLog(@"%@",friendId);

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Hi please add me as a friend.",  @"message",
                                   friendId, @"to",
                                   nil];
 [appDelegate.facebook dialog:@"apprequests" andParams:params  andDelegate:self];

请不要忘记首先在您的 ViewController 类中采用 FBdialogDelegate 协议。

【讨论】:

我已经这样做了,但没有看到请求通过朋友帐户。除了成为好友之外,还有什么要求可以查看请求吗?例如。在我的 FB 应用设置、plist 等中? @andyc,请确保您已在您的 FB 应用设置中将您的应用注册为“App On Facbook”。并且您的 Facebook 应用需要定义一个画布 URL。 URL 甚至不需要是有效的,它只需要在应用程序的设置中定义。我以同样的方式做事,我在我的 Facebook 通知中收到了应用请求通知,我希望你能在你的 Facebook 通知中收到应用请求通知。 如果我们希望用户在对话框中自己选择朋友,我们该怎么做? @xus 我们无法在对话框中选择好友,我们需要添加好友的 facebook id 以发送应用请求,如上所示 如何设置画布URL?我在设置页面的任何地方都看不到它【参考方案2】:

无法在没有对话框的情况下发送应用请求,仅使用 POST 方法。

根据the docs:

此 SDK 提供了一种弹出 Facebook 对话框的方法。当前支持的对话框是授权流程中使用的登录和权限对话框,以及用于将帖子发布到用户提要的对话框。

因此,您也不能通过标准对话框发布应用请求。它仅适用于 Web 应用程序。

【讨论】:

第一句不正确。您可以通过 POST 在没有对话框的情况下发送应用请求,假设用户已安装应用程序/授予权限。【参考方案3】:

我能够使用 Ruby 通过标准 POST 向 /me/apprequests 发送请求。我为应用程序和“消息”参数提供了一个有效的 access_token。有可能,iOS SDK 还没有相应的对话框。

注意:用户必须安装该应用程序一次,您才能向他们发送通知和邀请。所以安德鲁是正确的。目前还无法发送应用请求来邀请某人加入新应用。

【讨论】:

【参考方案4】:

andyc,使用这种方式你只能发送 App 请求。 请确保您已将您的应用程序注册为“App On Facbook”。 问题是为了在桌面网站上显示通知,您的 Facebook 应用程序需要定义一个 Canvas URL。 URL 甚至不需要是有效的,它只需要在应用程序的设置中定义。我已经用一个测试应用程序验证了这确实解决了这个问题。这是 Facebook 有意完成的,因为当用户点击通知时,他们会被发送到桌面网站上的 Canvas URL

我以同样的方式做事,我在通知中收到了应用请求。 发送应用请求仍然有问题,请查看以下链接

"apprequests" dialog reports success, recipients receive nothing

【讨论】:

【参考方案5】:

试试这个代码,

NSDictionary *params = @@"to":text;

NSString *message = @"MESSAGE";
NSString *title = @"TITLE";

[FBWebDialogs presentRequestsDialogModallyWithSession:nil
                                              message:message
                                                title:title
                                           parameters:params handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error)
 
     if (error)
     
         UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Request not sent" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
         [Alert show];
     
     else
     
         if (result == FBWebDialogResultDialogNotCompleted)
         
             // Case B: User clicked the "x" icon
             UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Canceled request" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
             [Alert show];
             NSLog(@"User canceled request.");
         
         else
         
             UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Success" message:@"Request sent successfully" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
             [Alert show];
             NSLog(@"Request Sent. %@", params);
         
     
 ];

【讨论】:

以上是关于Facebook iOS SDK - 向 facebook 用户发送应用请求的主要内容,如果未能解决你的问题,请参考以下文章

ios 应用程序的用户是不是可以使用 facebook-sdk 在 facebook 上喜欢 URL?

iOS Facebook SDK 向好友发送私信

iOS Facebook SDK 在设备上进行身份验证后未重定向

Facebook iOS SDK - 自定义委托

Facebook IOS SDK 可选权限

带有应用请求的 Facebook iOS SDK 传递参数