Добавление кнопки «Нравится» на Facebook в приложении для iPhone - PullRequest
25 голосов
/ 06 мая 2010

Кто-нибудь знает, как бы я включил кнопку «Мне нравится» в приложении для iPhone? Я пытался вызвать iframe внутри UIWebView, но это не работает.

Ответы [ 11 ]

13 голосов
/ 25 сентября 2011

Проверьте этот хороший фрагмент кода: http://angelolloqui.blogspot.com/2010/11/facebook-like-button-on-ios.html

Добавьте класс FBLikeButton на ваш взгляд:

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

Большое спасибо Angel García Olloqui

РЕДАКТИРОВАТЬ: Приятно добавить ... Для бонусных баллов:
Если вы используете вышеуказанный метод, веб-страница не отформатирована для iPhone. Что вы можете сделать, это запустить некоторый код JavaScript, чтобы удалить все мешающие div. Используйте это (длинное предложение):

  [_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);"]];

Вы можете поместить его в метод делегата webViewDidFinishLoad из FBDialog класса Facebook.

2 голосов
/ 15 октября 2014

Это старый вопрос, но мы только что получили ответ

Используя fb sdk теперь мы можем просто добавить кнопку лайка

FBLikeControl *likeButton = [[FBLikeControl alloc] init];
like.objectID = @"http://ihackthati.wordpress.com/photo1/";
[self addSubview:like];

https://developers.facebook.com/docs/ios/like-button/

2 голосов
/ 06 декабря 2013

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

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

#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 для добавления кнопки wbdet кнопки fbLike в веб-представление:

-(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 теперь его очередьдля определения метода 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
        }
    }];
}
1 голос
/ 28 марта 2011

Некоторые из приведенных выше решений (например, @floorjiann, @fabiobeta, @ Stephen-Darlington, @scott) предполагают, что приложение iPhone также является приложением Facebook (со своим собственным идентификатором).

Однако, если в вашем приложении для iPhone есть страница поклонника, это не так.

0 голосов
/ 18 февраля 2015

Вы можете использовать плагин SOOMLA Profile с открытым исходным кодом: https://github.com/soomla/ios-profile

Там есть примеры кода для множества действий, связанных с Facebook (войти, например, поделиться статусом, загрузить изображение, получить контакты, пригласить и т. Д.). Увидеть: https://github.com/soomla/ios-profile/blob/master/SoomlaiOSProfileExample/SoomlaiOSProfileExample/ViewController.m

0 голосов
/ 24 октября 2013

Сначала проверьте свою аутентификацию на Facebook, затем используйте URL-код вместо iFrame, например:

NSURL *url = [NSURL URLWithString:@"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FRemtechConfessionChambers&width=200&height=80&colorscheme=light&layout=standard&action=like&show_faces=true&send=false"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];

[webViewFb loadRequest:req];
0 голосов
/ 03 ноября 2010

Я в этот момент ты не можешь. Мобильные API не предоставляют эту возможность. Вы можете использовать обходной путь, заключающийся во внедрении html-способа сделать это в вашем приложении.

Некоторые подробности об обходном пути здесь: http://petersteinberger.com/2010/06/add-facebook-like-button-with-facebook-connect-iphone-sdk/

0 голосов
/ 08 сентября 2010

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

0 голосов
/ 27 августа 2010

Facebook недавно обновил iPhone Facebook Framework Connect для работы с Graph API. Это API, который вам нужен, чтобы "лайкать" объекты в Facebook.

0 голосов
/ 27 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...