1

サーバーとの通信に基づく iPhone アプリケーションを開発しており、Facebook 認証メカニズムを使用したいと考えています。

基本的には、次のように機能する必要があると思います。

  1. 私の iPhone アプリでは、ユーザーは自分の電子メールとパスワードを使用して Facebook にログインします。
  2. ユーザーは、関連する Facebook アプリケーションのデータへのアクセスを許可します。
  3. ログインに成功すると、iPhone アプリはアクセス トークンを受け取ります。
  4. サーバーとのさらなる通信では、iPhone アプリケーションは、受信した Facebook アクセス トークンを使用する必要があります (例: クエリ)。サーバーが iPhone アプリからアクセス トークンを使用してクエリを受信すると、このトークンが有効であることを Facebook に問い合わせる必要があります (および誰)、そうであれば、サーバーはユーザーが Facebook で認証されていると想定する必要があります。

私の質問は、指定されたアクセス トークンが有効かどうかをサーバーがどのように Facebook に問い合わせるべきかということです。Facebookアプリでトークンが有効かどうかをどうにかして確認する必要があると思います。

私が見つけた API をグラフ化するために多くの Facebook クエリを試しましたが、期待どおりに機能しませんでした。例を挙げていただけますか?

4

1 に答える 1

8

これでaccessTokenを取得しています

NSString * accessToken = [[FBSession activeSession] accessToken];

ユーザーは、このメソッドを実装することで、ユーザーの Facebook データを取得できます。

 - (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error
    {
        switch (state)
        {            ///  ****************   IT GIVES THIS ACCESS TOKEN   *****************///////////////////////// 
            case FBSessionStateOpen:
            {
                      // https://graph.facebook.com/me?access_token=%@
                 accessToken = [[FBSession activeSession] accessToken];
                NSLog(@"accessToken: %@",accessToken);
                NSString *urlList = [NSString stringWithFormat:@"https://graph.facebook.com/me?access_token=%@",accessToken];
                NSURL *url1 = [NSURL URLWithString:urlList];
                NSURLRequest *urlReqst = [[NSURLRequest alloc] initWithURL:url1];
                NSData *dataConnection = [NSURLConnection sendSynchronousRequest:urlReqst
                                                               returningResponse:nil
                                                                           error:nil];
                NSString *jsonData = [[NSString alloc] initWithData:dataConnection
                                                           encoding:NSUTF8StringEncoding];
                NSDictionary *jsonDic = [jsonData JSONValue];

                self.appid = [jsonDic valueForKey:@"id"];
                self.appusername = [jsonDic valueForKey:@"username"];
                self.appfirst_name = [jsonDic valueForKey:@"first_name"];
                self.applast_name = [jsonDic valueForKey:@"last_name"];
                self.appname = [jsonDic valueForKey:@"name"];
                self.appemailId = [jsonDic valueForKey:@"email"];

                [self LoginAPI];
                    if ([self.navigation.presentedViewController isKindOfClass:[LoginPage class]]) {
                    [self.navigation.presentedViewController dismissViewControllerAnimated:YES completion:nil];
                }
            }
                break;
            case FBSessionStateClosed:
            case FBSessionStateClosedLoginFailed:
                [self.navigation popToRootViewControllerAnimated:NO];
                            [self showLoginView];
                [self fbDidLogout];

                break;
                    default:
                break;
        }
        if (error)
        {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
        }
  }

また、Facebook ログインを介してアプリにログインするには、このサンプルを参照してください。

これがあなたを助けることを願っています...

于 2013-06-24T06:28:54.540 に答える