5

了解しました。FacebookIOSSDK(3.1.1)から基本的なユーザー情報を取得するのに苦労しています。他のプラットフォームでFB開発を行ったことで、私の問題はコードよりもFBアプリのセットアップに関係していると確信しています。ところで、私はiTunesにいて、iPhone用のiTunesIDを設定しました。また、アプリのバンドルIDを自分のバンドルIDと照合して、慎重にチェックし、4倍にチェックしました。

今のところ、テストユーザーで認証して、すべての詳細などを取得できます。これはうまく機能します。私のような実際のユーザーとしてログインすると(そして私はプロジェクトの開発者です)、Authトークンを取得しますが、ユーザーを取得するための呼び出しが失敗し、何が間違っているのかわかりません(テストユーザーは、すべての人に役立つはずです)。

ユーザーから取得する必要があるのは、BTWの名前、姓、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

FBIOSSDKでリクエストロギングをオンにすると。私は同じことを見て、これらが何を意味するのかどこにも説明を見つけることができません。

ログの最後の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

私はあなたと非常によく似たことをしています。私はログインにFacebookを使用しているので、パスワードの保存などについて心配する必要はありません。

私はこの一連の指示に従いました。Facebookサイトは、いたるところに古くなったものが配置されているので恐ろしいようです。

ネイティブFacebookまたはWebベースのユーザー認証を使用できるため(SDKがすべてを管理します)、古いバージョンのiOSで、ネイティブFacebookにサインインしていない場合でも機能します。

必要なものすべてを備えた「NSDictionary*user」を提供するハンドラーを設定します。iPhoneクライアントでグラフAPIを使用する必要はありません。

于 2012-12-05T20:26:07.197 に答える
0

REST APIが非推奨になったため、別の方法を検討する必要があると思います。FQLクエリを作成するには、GraphAPI呼び出しを使用する必要があります。

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

OK、これを閉じます。

2011年11月にSDKに戻しました。最初は機能していないようでしたが、その後は機能し始めました。Facebook側のバグがこれを引き起こしているのではないかと思います。私は再試行するために最新に更新していませんが、これは何が起こったのかについての私の唯一の推測です。

Facebookの開発に長い時間を費やしたことがあるなら、彼らのバグが本当に物事を難しくしていることをご存知でしょう。とはいえ、元のコードからコーディングを変更しなかったので、これが実際の答えであるかどうかはわかりません。

バンドルIDをFBアプリのセットアップから意図的に除外したことを知っています。

于 2013-01-21T16:20:46.373 に答える