Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding the Facebook Like Button in an iPhone App

Tags:

Does anyone know how I would include a facbeook "like button" in an iphone app. I tried calling the iframe inside of a UIWebView but that doesn't work.

like image 481
schwabr Avatar asked May 06 '10 19:05

schwabr


People also ask

How do I like a Facebook page on my Iphone app?

To like a Page: Go to the Page. Tap Like below the Page's cover photo.

How do I add a like button to my Facebook page 2021?

Go to your Page. Tap Add a Button. Tap to choose an action and follow the on-screen instructions. Tap Save.


2 Answers

Check out this nice bit of code: http://angelolloqui.blogspot.com/2010/11/facebook-like-button-on-ios.html

Add the FBLikeButton class to your view:

FBLikeButton *likeButton = [[FBLikeButton alloc] initWithFrame:CGRectMake(0, 372, 320, 44)        andUrl:@"http://www.facebook.com/pages/De-Zilk/108209735867960"]; 

Thanks a lot Angel García Olloqui

EDIT: Nice to add... For bonus points:
If you use above method the webpage is not well formatted for an iPhone. What you can do is run some JavaScript code to remove all the disturbing divs. Use this (long sentence):

  [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"javascript:document.getElementsByClassName('uiButton')[2].style.visibility='hidden';var child1 = document.getElementById('standard_status');var parent1 = document.getElementById('login_form');parent1.removeChild(child1);var child2 = document.getElementById('pageheader');var parent2 = document.getElementById('booklet');parent2.removeChild(child2);document.getElementById('loginform').style.width = '200px';var child3 = document.getElementById('reg_btn_link');var parent3 = document.getElementsByClassName('register_link')[0];parent3.removeChild(child3);var child4 = document.getElementById('signup_area');var parent4 = document.getElementById('login_form');parent4.removeChild(child4);var child5 = document.getElementsByClassName('mbm')[0];var parent5 = document.getElementById('loginform');parent5.removeChild(child5);var child6 = document.getElementsByClassName('reset_password form_row')[0];var parent6 = document.getElementById('loginform');parent6.removeChild(child6);var child7 = document.getElementsByClassName('persistent')[0];var parent7 = document.getElementById('loginform');parent7.removeChild(child7);"]]; 

You can place it in the delegate method webViewDidFinishLoad from the FBDialog Facebook class.

like image 70
Ben Groot Avatar answered Oct 04 '22 23:10

Ben Groot


Fb like Widget can be embedded in our application. You just have to add a webView and get the Fb Like Widget html code/URL here.

in ViewController.h where you want to add fb like button:

#import <UIKit/UIKit.h>  @interface TestViewController : UIViewController <UIWebViewDelegate>  @property (strong, nonatomic) UIWebView * fbLikeWebView;  -(void)embedFBLikeButton;  @end 

in 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;         }     } } 

then in ViewWillAppear method call the enbeddFBLikeButton Method to add the fbLike button wigdet on web view:

-(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]]]; } 

You conform to UIWebViewDelegate now its turn to defining th edelegate method here:

#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]; } 

This method for login the user to facebook Account:

- (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         }     }]; } 
like image 22
Sahil Mahajan Avatar answered Oct 05 '22 00:10

Sahil Mahajan