Я не смог получить токен доступа Facebook, чтобы использовать API графиков на iOS - PullRequest
0 голосов
/ 13 марта 2012

Я новичок в StackOverflow и iOS. Я пытаюсь получить пользовательскую информацию, такую ​​как группы, книги и т. Д., И для этого мне нужно использовать API графа Facebook. Для использования Graph API вы должны использовать токен доступа. Я прочитал статью на странице разработчиков Facebook об этой теме и написал код, но он не сработал. Вы можете мне помочь? Правильно ли указан мой код или я должен использовать другой способ?

мой .h файл:

#import <UIKit/UIKit.h>
#import "FBConnect.h"

@interface FirstViewController : UIViewController <FBSessionDelegate,FBLoginDialogDelegate,FBRequestDelegate>{

Facebook *face;


}

@property(nonatomic,retain)Facebook *face;
-(IBAction)facePushed:(id)sender;
-(IBAction)logoutPushed:(id)sender;

мой .m файл:

-(IBAction)facePushed:(id)sender{

NSLog(@"FacePushed Began");
face=[[Facebook alloc]initWithAppId:@"313714785358239" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    face.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    face.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}    
if (![face isSessionValid]) {
    [face authorize:nil ];
}
else {
    NSLog(@"Session is valid");
    }
    NSLog(@"FacePushed End");
}

}
- (void)fbDidLogin {
NSLog(@"aslan");

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[face accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[face expirationDate] forKey:@"FBExpirationDateKey"];
NSLog(@"%@", [face accessToken]);
[defaults synchronize];

}

- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate {
    NSLog(@"%@",token);


}

1 Ответ

1 голос
/ 13 марта 2012

вы должны проверить следующее в вашей реализации:

  1. вам необходимо получить разрешения, прежде чем авторизовать ваше приложение

     if (![face isSessionValid]) 
    {           
        NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_likes", 
                            @"read_stream",
                            @"publish_stream",
                            nil];
       [face authorize:permissions];
    
       [permissions release];
    }
    
  2. вам нужно добавить следующие функции в ваш делегат приложения (объект facebook здесь является значением вашего экземпляра класса FaceBook).

    // Pre 4.2 support
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
    {
       return [facebook handleOpenURL:url]; 
    }
    
    // For 4.2+ support
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
       return [facebook handleOpenURL:url]; 
    }
    
  3. в вашей информации.plist добавить к типам URL-адресов> Схемы URL-адресов> идентификатор вашего приложения FaceBok с префиксом fb (наконец, ваше значение будет примерно таким: fb313714785358239).

Удачи.

...