登录后,IOS Facebook SDK无法获取用户信息

时间:2012-12-03 17:24:41

标签: objective-c facebook facebook-ios-sdk

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

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

我需要从用户处获得,BTW是他们的名字,姓氏,FB用户ID和电子邮件地址(可选,但要求)。

目前在使用我games tutorial进行身份验证后。登录后,我会执行以下操作(尽管我已经完成了许多具有相同结果的其他内容):

 - (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.)

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

3 个答案:

答案 0 :(得分:0)

我正在做一些与你非常相似的事情。我正在使用facebook进行登录,这样我就不用担心存储密码了。不过。

我遵循了this一套说明.. facebook网站似乎很可怕,因为它遍布整个地方过时的东西。

您可以使用本机脸书或基于网络的用户身份验证(SDK将管理所有这些),因此它可以在旧版本的iOS上运行,并且在未登录到原生Facebook时。

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

答案 1 :(得分:0)

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

 http://developers.facebook.com/docs/reference/rest/fql.query/

答案 2 :(得分:0)

好的,我准备关闭它。

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

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

我知道我故意将捆绑ID从FB App Setup中删除..

相关问题