3

参考までに: 私は最新の Facebook IOS SDK v4 と最新の Parse v1.7.4 および ParseFacebookUtilsV4 SDK を使用しています。

だから私は PFFacebookUtils loginInBackgroundWithReadPermissions:block: メソッドを使用して、ユーザーに Facebook 資格情報でログインさせ、それらの資格情報で PFUser を作成しています。そして、私が読んだものから、有効なトークンが設定されていると仮定するFBSDKGraphRequestを使用してFacebookグラフリクエストを作成しました(それにトークンパラメーターが渡されていません)。

しかし、Facebook のグラフ リクエストは失敗しました。問題を追跡していると、「アクセス トークン」が loginInBackgroudnWithReadPermissions メソッドによって設定されていないことに気付きました。このメソッドが行うことは、Parse で PFUser と Session インスタンスを作成し、そこにセッション トークン文字列を格納することだけですが、 currentAccessToken は設定しません。ブロック内で [[FBSDKAccessToken currentAccessToken] tokenString] 呼び出しを行うと、(null) が返されます。しかし、PFSession クラスから「トークン文字列」を読み取ると、Parse の Session クラス インスタンスに「トークン文字列」ストアが取得されます。

以下のコードを参照してください。

- (IBAction)fbLoginAction:(id)sender {

// Set permissions required from the facebook user account
NSArray *permissionsArray = @[ @"email", @"user_friends"];
// Login PFUser using Facebook
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
    if (!user) {
        NSLog(@"Uh oh. The user cancelled the Facebook login.");
    } else if (user.isNew) {
        NSLog(@"User signed up and logged in through Facebook!");


        // Check if the current token has been set
        NSLog(@"self.myCurrentToken string = %@", [[FBSDKAccessToken currentAccessToken] tokenString]); // returns (null)

        // Get the token string from the PFSession
        [PFSession getCurrentSessionInBackgroundWithBlock:^(PFSession *session, NSError *error) {
                    NSString *tokenString = session.sessionToken;
                    NSLog(@"Session token = %@", tokenString);

                }];

}

そして、これがデバッグコンソールの出力です ここに画像の説明を入力

だから私は何が起こっているのか分かりません。PFSession トークンが何かに設定されている場合、FBSDKAccessToken currentAccessToken はこれと同じ PFsession トークンを返すべきではありませんか?

accessToken を手動で設定する場合、Parse に保存されているトークン文字列を FBSDKAccessToken インスタンスに変換するにはどうすればよいですか? これを行う方法はないようですか?

ありがとう

4

2 に答える 2