--BY this way Facebook-ios-sdk
@property (nonatomic, retain) NSString *chk;
@end
@implementation SettingsViewController
@synthesize chk,viewFbLogin;
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;
AppDelegate *appDelegate;
UIViewController *tweetComposer;
ACAccount *twitterAccount;
ACAccountStore *account;
ACAccountType *accountType;
NSArray *arrayOfAccounts ;
int arr_row_num;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)storeAccountWithAccessToken:(NSString *)token secret:(NSString *)secret
{
// Each account has a credential, which is comprised of a verified token and secret
ACAccountCredential *credential =
[[ACAccountCredential alloc] initWithOAuthToken:token tokenSecret:secret];
// Obtain the Twitter account type from the store
accountType =
[account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
// Create a new account of the intended type
twitterAccount = [[ACAccount alloc] initWithAccountType:accountType];
// Attach the credential for this user
twitterAccount.credential = credential;
// Finally, ask the account store instance to save the account
// Note: that the completion handler is not guaranteed to be executed
// on any thread, so care should be taken if you wish to update the UI, etc.
[account saveAccount:twitterAccount withCompletionHandler:^(BOOL success, NSError *error) {
if (success) {
// we've stored the account!
NSLog(@"the account was saved!");
}
else {
//something went wrong, check value of error
NSLog(@"the account was NOT saved");
// see the note below regarding errors...
// this is only for demonstration purposes
if ([[error domain] isEqualToString:ACErrorDomain]) {
// The following error codes and descriptions are found in ACError.h
switch ([error code]) {
case ACErrorAccountMissingRequiredProperty:
NSLog(@"Account wasn't saved because "
"it is missing a required property.");
break;
case ACErrorAccountAuthenticationFailed:
NSLog(@"Account wasn't saved because "
"authentication of the supplied "
"credential failed.");
break;
case ACErrorAccountTypeInvalid:
NSLog(@"Account wasn't saved because "
"the account type is invalid.");
break;
case ACErrorAccountAlreadyExists:
NSLog(@"Account wasn't added because "
"it already exists.");
break;
case ACErrorAccountNotFound:
NSLog(@"Account wasn't deleted because"
"it could not be found.");
break;
case ACErrorPermissionDenied:
NSLog(@"Permission Denied");
break;
case ACErrorUnknown:
default: // fall through for any unknown errors...
NSLog(@"An unknown error occurred.");
break;
}
} else {
// handle other error domains and their associated response codes...
NSLog(@"%@", [error localizedDescription]);
}
}
}];
}
- (void)viewDidLoad
{
[super viewDidLoad];
account = [[ACAccountStore alloc] init];
accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
arrayOfAccounts = [account accountsWithAccountType:accountType];
// [self storeAccountWithAccessToken:@"119745010-g6YqvIdpyvBvYuaweR5oI1V1h9ugIqlj0toetlqg" secret:@"ysBO2E6dgOWj2vKEFoC3PCEypMaPrpycy5WIeodUNro"];
appDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate];
chk=appDelegate.chk_login;
if (!appDelegate.session.isOpen) {
// create a fresh session object
appDelegate.session = [[FBSession alloc] init];
if (appDelegate.session.state == FBSessionStateCreatedTokenLoaded) {
// even though we had a cached token, we need to login to make the session usable
[appDelegate.session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// we recurse here, in order to update buttons and labels
}];
}
}
if ([chk isEqualToString:@"YES"] && (appDelegate.setting_flag==FALSE))
{
appDelegate.arr=[NSMutableArray arrayWithObjects:@"Change Password",@"Facebook Login",@"Twitter Login",nil];
}
else
{
if(appDelegate.setting_flag==FALSE)
appDelegate.arr=[NSMutableArray arrayWithObjects:@"Facebook Login",@"Twitter Login",nil];
}
}
-(void) updateView
{
}
- (void)viewWillAppear:(BOOL)animated
{
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [appDelegate.arr count];
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = [self.SettingsTable dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell)
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
if([[appDelegate.arr objectAtIndex:indexPath.row] isEqualToString:@"Twitter Login"])
{
twitterAccount = [arrayOfAccounts objectAtIndex:0];
NSLog(@"array=%@",[arrayOfAccounts objectAtIndex:0]);
NSDictionary *tempDict = [[NSDictionary alloc] initWithDictionary:
[twitterAccount dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"properties"]]];
NSString *tempUserID = [[tempDict objectForKey:@"properties"] objectForKey:@"user_id"];
NSLog(@"temp=%@",tempUserID);
if (!IsEmpty(tempUserID))
{
[appDelegate.arr replaceObjectAtIndex:indexPath.row withObject:@"Twitter Logout"];
cell.textLabel.text=@"Twitter Logout";
}
else
{
cell.textLabel.text=[appDelegate.arr objectAtIndex:indexPath.row];
}
}
else if([[appDelegate.arr objectAtIndex:indexPath.row] isEqualToString:@"Facebook Login"])
{
if (appDelegate.session.isOpen) {
[appDelegate.arr replaceObjectAtIndex:indexPath.row withObject:@"Facebook Logout"];
cell.textLabel.text=[appDelegate.arr objectAtIndex:indexPath.row];
}
else
{
cell.textLabel.text=[appDelegate.arr objectAtIndex:indexPath.row];
}
}
else
{
cell.textLabel.text=[appDelegate.arr objectAtIndex:indexPath.row];
}
return cell;
}
- (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([[appDelegate.arr objectAtIndex:indexPath.row]isEqualToString:@"Change Password"] && [chk isEqualToString:@"YES"])
{ [UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
ForgetPasswordViewController *forgetPassView=[[ ForgetPasswordViewController alloc] initWithNibName:@"ForgetPasswordViewController" bundle:[NSBundle mainBundle]];
NSLog(@"Working table");
[self.navigationController pushViewController:forgetPassView animated:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
}
else if([[appDelegate.arr objectAtIndex:indexPath.row]isEqualToString:@"Facebook Login"])
{
if (appDelegate.session.state != FBSessionStateCreated) {
// Create a new, logged out session.
appDelegate.session = [[FBSession alloc] init];
}
[appDelegate.session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// and here we make sure to update our UX according to the new session state
if (appDelegate.session.isOpen) {
[appDelegate.arr replaceObjectAtIndex:indexPath.row withObject:@"Facebook Logout"];
[self.SettingsTable reloadData];
}
}];