Для справки: Я использую последнюю версию IOS SDK v4 и последнюю версию Parse v1.7.4 и ParseFacebookUtilsV4 SDK.Почему accesstoken не задан PFFacebookUtils logInInBackgroundWithReadPermissions method?
Так что я использую PFFacebookUtils loginInBackgroundWithReadPermissions: block: метод для входа пользователя с учетными данными Facebook и создания PFUser с этими учетными данными. И затем приступил к созданию запроса графика facebook с FBSDKGraphRequest, который из того, что я читал, предполагает, что установлен действительный токен (для него не передается параметр токена).
Но запрос графика facebook не удался, и в отслеживании проблемы я заметил, что «токен доступа» никогда не устанавливается методом loginInBackgroudnWithReadPermissions. То, что этот метод делает только, - это создать PFUser и экземпляр Session в Parse и сохранить там строку токена сеанса, но она не устанавливает currentAccessToken. Когда я делаю вызов [[FBSDKAccessToken currentAccessToken] tokenString] в блоке, я получаю (null). Но если я прочитаю «токенную строку» из класса PFSession, я получу хранилище «токенов» в экземпляре класса Session в Parse.
Смотрите код ниже:
- (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? Кажется, нет способа сделать это?
благодаря
Вы могли понять это? – jhk