25

有谁知道我将如何在 iphone 应用程序中包含一个 facbeook “like 按钮”。我尝试在 a 中调用 iframe,UIWebView但这不起作用。

4

11 回答 11

13

看看这段漂亮的代码: 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);"]];

您可以将它放在Facebook 类的委托方法webViewDidFinishLoad中。FBDialog

于 2011-09-25T14:00:19.847 回答
2

这是一个老问题,但我们刚刚得到了答案

现在通过使用 fb sdk 我们可以简单地添加like按钮

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

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

于 2014-10-15T12:11:02.873 回答
2

Fb like Widget 可以嵌入到我们的应用程序中。您只需添加一个 webView 并在此处获取 Fb Like Widget html 代码/URL

在 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 方法在 web 视图上添加 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 ,现在轮到在这里定义 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
        }
    }];
}
于 2013-12-06T12:17:24.233 回答
1

上面的几个解决方案(例如@floorjiann、@fabiobeta、@Stephen-Darlington、@scott)假设 iPhone 应用程序也是 Facebook 应用程序(有自己的 id)。

但是,如果您的 iPhone 应用程序只有一个粉丝页面,则情况并非如此。

于 2011-03-28T10:37:42.220 回答
0

您可以使用开源的 SOOMLA Profile 插件: https ://github.com/soomla/ios-profile

那里有很多 Facebook 相关操作的代码示例(登录、点赞、分享状态、上传图片、获取联系人、邀请等)。见: https ://github.com/soomla/ios-profile/blob/master/SoomlaiOSProfileExample/SoomlaiOSProfileExample/ViewController.m

于 2015-02-18T15:14:46.657 回答
0

给你 - 使用源代码......享受 - 如果有用,请发表评论。

http://nowbrand.com/blog/adding-a-facebook-like-button-to-an-iphone-application/

于 2010-09-08T03:41:39.507 回答
0

你可以将它包含在 UIWebView 中,只要确保它在<html><body>. 问题是一旦用户单击按钮,UIWebView 可能会重定向到登录表单,因此您必须使其足够大以适应该内容。

尽情享受以合理的方式呈现按钮的设计吧。

于 2010-08-04T12:07:59.683 回答
0

也许这有帮助

http://www.raywenderlich.com/1626/how-to-post-to-a-users-wall-upload-photos-and-add-a-like-button-from-your-iphone-app

于 2010-08-27T12:29:40.367 回答
0

Facebook 最近更新了他们的iPhone Facebook Connect 框架以使用 Graph API。这是您在 Facebook 上“点赞”对象所需的 API。

于 2010-08-27T12:39:07.017 回答
0

首先在 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];
于 2013-10-24T12:34:32.770 回答
-1

我这一刻你不能。移动 API 并未公开此功能。您可以使用一些解决方法,包括将 html 方式嵌入到您的应用程序中。

有关解决方法的一些详细信息:http: //petersteinberger.com/2010/06/add-facebook-like-button-with-facebook-connect-iphone-sdk/

于 2010-11-03T19:22:59.803 回答