5

好吧,我从 Facebook IOS SDK (3.1.1) 获取一些基本的用户信息时遇到了麻烦。在使用其他平台完成 FB 开发后,我非常确信我的问题与 FB 应用程序的设置有关,而不是与我的代码有关。顺便说一句,我在 iTunes 中并为 iPhone 设置了 iTunes ID。我还仔细检查并四次检查了应用程序设置中的捆绑 ID 与我的捆绑 ID。

现在我可以通过测试用户进行身份验证并获取所有详细信息等。它工作得很好。当我以像我这样的真实用户身份登录时(并且我是该项目的开发人员),我得到了一个 Auth 令牌,但是让用户失败的调用失败,我不确定我做错了什么(如果它适用于一个测试用户,它应该适用于所有人)。

我只需要从用户那里得到,顺便说一句,就是他们的名字、姓氏、FB 用户 ID 和电子邮件地址(可选,但需要)。

目前在使用我正在使用游戏教程进行身份验证后。登录后,我将执行以下操作(尽管我已经完成了许多其他具有相同结果的操作):

 - (void)fbDidLogin
 {
    // removed the setup for the class level Facebook var that I am currently not using

    // get information about the currently logged in user

    NSString *fql = @"select uid, first_name, last_name, email  from user where uid = me()";
    NSDictionary *queryParam = [NSDictionary dictionaryWithObjectsAndKeys:fql, @"q", nil];

    [FBRequestConnection startWithGraphPath:@"/fql"
                      parameters:queryParam
                      HTTPMethod: @"GET"
                      completionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error) {
                        [self meRequestResult:result WithError:error];
                      }];
 }

meRequestResult 例程开始如下:

- (void)meRequestResult:(id)result WithError:(NSError *)error
{
 if ([result isKindOfClass:[NSDictionary class]])
 {
    NSDictionary *dictionary;
    if([result objectForKey:@"data"])
        dictionary = (NSDictionary *)[(NSArray *)[result objectForKey:@"data"] objectAtIndex:0];
    else
        dictionary = (NSDictionary *)result;

    [fbUserData release];
    fbUserData = [dictionary retain];

    NSString *facebookId = [dictionary objectForKey:@"id"];
    if(!facebookId)
        facebookId = [dictionary objectForKey:@"uid"];
 // and more follows that is not pertinent

当我在 FB IOS SDK 中打开请求日志记录时。我看到同样的事情,在任何地方都找不到任何描述这些是什么意思。

这是日志中的最后 10 行左右:

 2012-12-03 11:52:12.394 mTender[6572:1cd03] Reachability Flag Status: -R -----l- networkStatusForFlags
 2012-12-03 11:52:12.395 mTender[6572:1cd03] The internet is working via WIFI.
 2012-12-03 11:52:12.396 mTender[6572:1cd03] Reachability Flag Status: -R ------- networkStatusForFlags
 2012-12-03 11:52:12.396 mTender[6572:1cd03] A gateway to the host server is working via WIFI.
 2012-12-03 11:52:35.093 mTender[6572:1cd03] FBSDKLog: Request <#1111>:
      URL:  https://graph.facebook.com//fql?sdk=ios&access_token=ACCESS_TOKEN_REMOVED&q=select%20uid%2C%20first_name%2C%20last_name%2C%20email%20%20from%20user%20where%20uid%20%3D%20me%28%29&migration_bundle=fbsdk%3A20121003&format=json
      Method:   GET
      UserAgent:    FBiOSSDK.3.1.1
      MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f

 2012-12-03 11:52:37.194 mTender[6572:1cd03] Error: HTTP status code: 500
 2012-12-03 11:52:37.196 mTender[6572:1cd03] FBSDKLog: Response <#1111> <Error>:
     The operation couldn’t be completed. (com.facebook.sdk error 5.)

希望有人能解决这个问题。这是这个项目的最后一步..

4

3 回答 3

0

我认为您必须看到替代方式,因为 REST API 已被弃用。要进行 FQL 查询,您必须使用 Graph API 调用。

 http://developers.facebook.com/docs/reference/rest/fql.query/
于 2012-12-12T13:27:05.453 回答
0

我正在做与你非常相似的事情。我正在使用 facebook 登录,这样我就不必担心存储密码等等。

我遵循了这套说明。Facebook 网站的布局方式似乎很糟糕,到处都是过时的东西。

您可以使用本机 facebook 或基于 Web 的用户身份验证(SDK 将管理所有这些),因此它可以在旧版本的 iOS 上以及未登录本机 facebook 时使用。

您将设置一个处理程序,该处理程序将为您提供一个“NSDictionary *user”,其中包含您需要的所有内容。无需在 iphone 客户端上使用图形 api。

于 2012-12-05T20:26:07.197 回答
0

好的,我要关闭这个了。

我在 2011 年 11 月恢复到 SDK。起初它似乎没有工作,然后它才开始工作。我怀疑 Facebook 端的一个错误导致了这种情况。我还没有更新到最新的尝试,但这是我对发生了什么的唯一猜测。

如果你做过任何冗长的 Facebook 开发,你就会知道有时他们的错误确实让事情变得困难。也就是说,不知道这是否是实际答案,因为我真的没有对原始代码进行任何编码更改。

我知道我故意将捆绑 ID 排除在 FB 应用程序设置之外。

于 2013-01-21T16:20:46.373 回答