Facebook Graph API для токена доступа iphone - PullRequest
2 голосов
/ 09 мая 2011

Я использую Facebook Graph API, как в этом примере API

Это проверка учетных данных входа в View did Appear и вызов всех методов в одном представлении. Я хочу использовать эти методы в других представлениях, но как передать токен доступа в другие представления (поддерживает сеанс входа в систему). Вот код для входа в систему

    - (void)viewDidAppear:(BOOL)animated {

    //Facebook Application ID

    NSString *client_id = @"142759389130183";

    //alloc and initalize our FbGraph instance
    self.fbGraph = [[FbGraph alloc] initWithFbClientID:client_id];

    //begin the authentication process.....
    //[fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:) 
    //                   andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins"];



        [fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:) andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access" andSuperView:self.view];


}
- (void)fbGraphCallback:(id)sender {

    if ( (fbGraph.accessToken == nil) || ([fbGraph.accessToken length] == 0) ) {

        NSLog(@"You pressed the 'cancel' or 'Dont Allow' button, you are NOT logged into Facebook...I require you to be logged in & approve access before you can do anything useful....");

        //restart the authentication process.....
    //  [fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:) 
            //               andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins"];

    //  StartPage *startPage = [[StartPage alloc]initWithNibName:@"StartPage" bundle:nil];
        //[self.navigationController pushViewController:startPage animated:YES];



        //[startPage release];

        [self dismissModalViewControllerAnimated:YES];
    } else {
        //pop a message letting them know most of the info will be dumped in the log
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@"You are logged into facebook" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];

        NSLog(@"------------>CONGRATULATIONS<------------, You're logged into Facebook...  Your oAuth token is:  %@", fbGraph.accessToken);



    }

}

Ответы [ 2 ]

0 голосов
/ 09 мая 2011
 -(IBAction)postMeFeedButtonPressed:(id)sender {

postFeedCustom *detailViewController = [[postFeedCustom alloc] initWithNibName:@"postFeedCustom" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];

}

-(void)postMeFeedCustomized{
NSMutableDictionary *variables = [NSMutableDictionary dictionaryWithCapacity:4];

[variables setObject:postString forKey:@"message"];
//[variables setObject:@"http://bit.ly/bFTnqd" forKey:@"link"];
//[variables setObject:@"This is the bolded copy next to the image" forKey:@"name"];
//[variables setObject:@"This is the plain text copy next to the image.  All work and no play makes Jack a dull boy." forKey:@"description"];

FbGraphResponse *fb_graph_response = [fbGraph doGraphPost:@"me/feed" withPostVars:variables];
NSLog(@"postMeFeedButtonPressed:  %@", fb_graph_response.htmlResponse);

//parse our json
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *facebook_response = [parser objectWithString:fb_graph_response.htmlResponse error:nil];   
[parser release];

//let's save the 'id' Facebook gives us so we can delete it if the user presses the 'delete /me/feed button'

self.feedPostId = (NSString *)[facebook_response objectForKey:@"id"];
NSLog(@"feedPostId, %@", feedPostId);
NSLog(@"Now log into Facebook and look at your profile...");

}

в другом классе, где вы хотите, чтобы пользователь отправил свое собственное сообщение ... вы можете сделать это следующим образом ..

  -(void) viewDidLoad{
[super viewDidLoad];
appDelegate=(oAuth2TestAppDelegate*)[[UIApplication sharedApplication]delegate];

}

 -(IBAction)FeedPost:(id)sender{
postString=postField.text;
[appDelegate.viewController postMeFeedCustomized];
postField.text=@"";
[postField resignFirstResponder];

}

Вы видели это ??в этом методе для кнопки я вызвал метод postfeedcustomized, и я сохраняю параметр текстового поля в postString, и это тот postStirng, который я публикую в методе postfeedcustomized.см. эту инструкцию [variables setObject:postString forKey:@"message"];

здесь строка сообщения - это строка ... которая находится в viewController 2 ... она содержит сообщение, введенное пользователем ... теперь это код для отправки сообщения из другого представления... когда кнопка нажата для отправки канала, он переходит к другому контроллеру представления, где находится текстовое поле ... там пользователь вводит свое сообщение ... и после того, как он вводит сообщение, из этого viewController вызывается метод postfeedcustomized .Iсделали это только для статуса ... измените его в соответствии с вашими потребностями и опубликуйте картинку из другого представления ..

0 голосов
/ 09 мая 2011

Я тоже использую Facebook API. В моем коде у меня есть «FacebookLogger», который является одиночным объектом с объектом Facebook.

Для хранения сессии я использую NSUserDefaults (поиск документации здесь) .

[[NSUserDefaults standardUserDefaults] setObject:m_Facebook.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:m_Facebook.expirationDate forKey:@"ExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];

Где m_Facebook - мой объект Facebook в моем синглтоне. После этого я могу поймать Access с помощью:

m_Facebook.accessToken    = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];

m_Facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...