2013-04-22 2 views
2

Я знаю, как любить фотографии/комментарии в Facebook. Но я хочу, чтобы Facebook страница через мое приложение. Является ли это возможным? Если да, может ли кто-нибудь дать мне несколько предложений?Facebook-страница, как в iOS

ответ

3

Это проблема. Если бы вы смогли это сделать, вы могли бы «понравиться» на странице программно, если бы пользователь не осознавал, что это то, что происходит. Это нарушит TOS Facebook.

Я думаю, вам будет лучше просто разместить в приложении обычную «кнопку» и позволить вашим пользователям решить, хотите ли они щелкнуть по ней.

Некоторые связанные должности -

+0

можно написать код, используя Graph API, чтобы понравиться страницу facebook programmaatically. –

+0

@AbdulYasin - не стесняйтесь добавлять свой собственный ответ. Я все еще не думаю, что это возможно. Оформить ссылки, которые я разместил, - все они содержат соответствующую информацию. – Lix

+0

-Я много искал.И, наконец, пришел к выводу, что facebook не позволит нам понравиться страница без предварительного разрешения пользователя. Большое спасибо Lix ... Ну, что такое идеальный подход для симпатии к публичной странице. Ждем вас от вас. –

1

Я написал метод свое призвание, которое вы можете полюбить вашу страницу, давая его URL в методе. Для этого метода вам необходимо использовать facebook sdk и добавить некоторые устаревшие файлы facebook как.

#import "Facebook.h" 
#import "FBCustomLoginDialog.h" 
#import "Accounts/Accounts.h" 

Это до вас, как вы обнаружите, что файлы и использовать it.Any способ это рабочий код для страницы как.

-(void)like 
{ 
    NSString *[email protected]"http://in.yahoo.com/?p=us"; // here you page url 

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            likePage, @"object",[[NSUserDefaults standardUserDefaults] valueForKey:@"token"],@"access_token", 
            nil]; 

    [FBRequestConnection startWithGraphPath:@"/me/og.likes" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:nil message:[NSString stringWithFormat:@"liked with id %@",[result valueForKey:@"id"]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert show]; 

     NSLog(@"result is %@",result); 
    }]; 
} 

- (IBAction)likepageonFB:(id)sender 
{ 
    if ([[FBSession activeSession] isOpen]) { 
     [self like]; 
    }else 
    { 
     [appDelegate openSession]; 
    } 
} 

Вот код, используемый в приложении файл делегата ....

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[LikeAppViewController alloc] initWithNibName:@"LikeAppViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 


    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) { 
     // To-do, show logged in view 
//   [self openSession]; 
    } else { 
     // No, display the login page. 
     [self showLoginView]; 
    } 

    return YES; 
} 


#pragma mark- Facebook Methods 

- (void)sessionStateChanged:(FBSession *)session 
         state:(FBSessionState) state 
         error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: 
     { 
      [[NSUserDefaults standardUserDefaults] setValue:[[FBSession activeSession] accessToken] forKey:@"token"]; 
      NSLog(@"token is %@",[[FBSession activeSession] accessToken]); 
      [self.viewController like]; 
     } 
      break; 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      [self showLoginView]; 
      break; 
     default: 
      break; 
    } 

    if (error) { 
     UIAlertView *alertView = [[UIAlertView alloc] 
            initWithTitle:@"Error" 
            message:error.localizedDescription 
            delegate:nil 
            cancelButtonTitle:@"OK" 
            otherButtonTitles:nil]; 
     [alertView show]; 
    } 
} 

- (void)openSession 
{ 

    NSLog(@"open session called "); 

    NSArray *permissions=[[NSArray alloc] initWithObjects:@"publish_stream",@"publish_actions",@"user_likes",@"user_about_me",nil]; 

    [FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:^(FBSession *session, 
                                    FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 
    }]; 
} 

- (void)showLoginView 
{ 
    [self.viewController presentedViewController]; 
} 

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation 
{ 
    return [FBSession.activeSession handleOpenURL:url]; 
} 

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

использовать этот файл FBCustomLoginDialog.h и FBCustomLoginDialog.m

+0

Я попробую это и дам вам знать .... – Venkat

+0

как насчет импорта "FBCustomLoginDialog.h" ???????????? – Venkat

+0

использовать файлы, которые я вам дал в отредактированном коде – Warewolf

1

Fb как виджет может быть встроен в нашем приложении. Вам просто нужно добавить webView и получить Fb Like Widget html code/URL here.

в ViewController.h, где вы хотите добавить кнопку FB, как:

#import <UIKit/UIKit.h> 

@interface TestViewController : UIViewController <UIWebViewDelegate> 

@property (strong, nonatomic) UIWebView * fbLikeWebView; 

-(void)embedFBLikeButton; 

@end 

в TestViewController.m

#import "AboutUsViewController.h" 

@implementation AboutUsViewController 

@synthesize fbLikeWebView = _fbLikeWebView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //Add this code for FbLike Webview 

    self.fbLikeWebView = [[UIWebView alloc] initWithFrame: CGRectMake(100.0, 50.0, 55.0, 70.0)]; 
    _fbLikeWebView.opaque = NO; 
    _fbLikeWebView.backgroundColor = [UIColor clearColor]; 
    _fbLikeWebView.delegate = self; 
    [self.view addSubview:_fbLikeWebView]; 

    for (UIScrollView *subview in _fbLikeWebView.subviews) 
    { 
     if ([subview isKindOfClass:[UIScrollView class]]) { 
      subview.scrollEnabled = NO; 
      subview.bounces = NO; 
     } 
    } 
} 

затем в методе ViewWillAppear вызвать метод enbeddFBLikeButton добавить кнопку fbLike wigdet на вид сверху:

-(void)viewWillAppear:(BOOL)animated 
{ 
    [self embedFBLikeButton]; 
    [_fbLikeWebView reload]; 
} 

-(void)embedFBLikeButton 
{ 
    NSString *facebookUrl = //here paste the url you get from fb developer link above; 

    [self.fbLikeWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:facebookUrl]]]; 
} 

Вы соглашаетесь с UIWebViewDelegate no ж свою очередь, к определению й метод edelegate здесь:

#pragma mark - WebView Delgate Methods 

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if ([request.URL.lastPathComponent isEqualToString:@"login.php"]) 
    { 
     [self login]; 

     return NO; 
    } 

    return YES; 
} 

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    [_fbLikeWebView stopLoading]; 
} 

Этот метод для входа в систему пользователю facebook счета:

- (void)login 
{ 
    [FBSession setActiveSession: [[FBSession alloc] initWithPermissions:@[@"publish_actions", @"publish_stream", @"user_photos"]]]; 

    [[FBSession activeSession] openWithBehavior: FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 
     switch (status) { 
      case FBSessionStateOpen: 
       // call the legacy session delegate 
       //Now the session is open do corresponding UI changes 
       if (session.isOpen) { 
        FBRequest *me = [FBRequest requestForMe]; 

        [me startWithCompletionHandler: ^(FBRequestConnection *connection, 
                 NSDictionary<FBGraphUser> *my, 
                 NSError *error) { 
         if (!my) { 
          NSLog(@"Facebook error:\n%@", error.description); 
          [[[UIAlertView alloc] initWithTitle: @"Error" 
                 message: @"Facebook Login error." 
                 delegate: self 
               cancelButtonTitle: @"Ok" 
               otherButtonTitles: nil, nil] show]; 
          return; 
         } 
        }]; 

        [_fbLikeWebView reload]; 

        [[[UIAlertView alloc] initWithTitle: @"" 
               message: @"Successfully Login. Please click on like button" 
               delegate: self 
             cancelButtonTitle: @"Ok" 
             otherButtonTitles: nil, nil] show]; 
       } 
       break; 
      case FBSessionStateClosedLoginFailed: 
      { 
       [_fbLikeWebView reload]; 
      } 
       break; 
      default: 
       break; // so we do nothing in response to those state transitions 
     } 
    }]; 
} 
Смежные вопросы