0

私のアプリでは、Facebook から写真を撮りたいと思っています。だから私はfacebook ios sdkを使いました。私は以下のコードから承認することができます:

 if (appDelegate.session.isOpen) {

            //[appDelegate.session closeAndClearTokenInformation];
            [self retrieveAlbums];

        } else {
            if (appDelegate.session.state != FBSessionStateCreated) {
                // Create a new, logged out session.
                appDelegate.session = [[FBSession alloc] init];
            }

            // if the session isn't open, let's open it now and present the login UX to the user
            [appDelegate.session openWithCompletionHandler:^(FBSession *session,
                                                             FBSessionState status,
                                                             NSError *error) {
                // and here we make sure to update our UX according to the new session state
                //NSLog(@"%@",session.accessTokenData.accessToken);
                [self retrieveAlbums];
            }];

iPhoneシミュレーターで問題なく動作します。しかし、iPhone 4 デバイスでログインできません。ログインしようとすると、サファリが開き、「更新中」というメッセージが表示されます。その後、承認なしでリダイレクトします。nil として取得されたアクセス トークン。そのため、画像を取得できません。

私を助けてください。

編集

みんなありがとう。最後に私は私の問題を解決しました。Facebookの開発者アカウント設定でサンドボックスモードを有効にしたためです。サンドボックスモードを無効にすると、正常に動作します。

4

2 に答える 2

1

[設定] に移動して、Safari の Cookie とキャッシュをクリアしてみてください。また、アプリを Safari にリダイレクトさせたくない場合は、info.plist に「fb-AppId-」のような URL スキームを指定しないでください。ログイン用のポップアップが開きます。

于 2013-05-02T12:27:10.620 に答える
0

私は同様の問題を抱えていて、このWebサイトでいくつかのソリューションを作成することで解決しました. まず、情報 plist で URL スキームを削除しました。だから今、私のアプリは私の登録ページ内でFacebookのログインダイアログを開きます。Facebook認証のためにSafariに行ったり来たりせず、アプリ内にとどまるため、これは良いことです. 2 番目に作成したのは、Facebook ログイン用のコード内にエラー処理メカニズムを配置することです。そのため、facebook でのログインが失敗した場合、別の方法でログインします。

これが私のコードです。

  - (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error {

      NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"public_profile", @"user_friends", @"email",
                        nil];
      FBSession *session = [[FBSession alloc] initWithPermissions:permissions];
      [FBSession setActiveSession:session];

      [self openSessionWithAllowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
         if (!error && status == FBSessionStateOpen) {
           NSString *token = session.accessTokenData.accessToken;
           NSLog(@"Logged in! - Token -- %@", token);
         } else {
           NSLog(@"Something wrong happened");//you can check the error code here
         }
     }];
  }
于 2014-06-11T12:32:51.447 に答える