参考までに: 私は最新の 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 インスタンスに変換するにはどうすればよいですか? これを行う方法はないようですか?
ありがとう