1

我正在尝试从我的原生 iOS 应用程序中点赞一个企业 Facebook 赞页面 (facebook.com/[LikePage])。我已将 FB iOS SDK 用于登录/注销目的。

我已经实现了类似于http://angelolloqui.com/blog/10-Facebook-Like-Button-on-iOS的 LIKE 按钮,它是 webview 上社交插件的实现。我这样做是因为我知道要实现自定义 LIKE 按钮,我需要使用 FB 提供的内置 Like,这反过来又需要我的操作得到 FB 的批准。

但是,我注意到社交插件实现不能在 iOS 原生应用程序中使用,只能在移动 Web 应用程序中使用。所以,这是我的问题:-

  1. 是不是原生 iOS 应用程序不能使用 facebook 提供的社交插件来点赞 Facebook Page?
  2. 为了构建自定义的赞按钮而不是插件,我是否需要使用 Facebook 提供的内置赞,而这又需要批准我的操作类型?(在我的情况下,喜欢一个页面)
    我所需要的只是一些具体的文档,它清楚地让我知道哪个是最好的前进方式。
    仅供参考,需要点赞的业务页面 URL 来自服务器。

提前致谢。

4

4 回答 4

2

没有 API 或自动方法来喜欢 Facebook 页面。内置的开放图操作一旦获得批准,就可以让您喜欢其他带有开放图元标记但没有 Facebook 页面的 URL。

据我所知,Like 按钮插件应该在 web 视图中工作。

于 2012-08-25T15:04:12.563 回答
2

您可以只使用常规的NSURLRequest来点赞该页面,或者使用另一个库来进行 post 调用:https://graph.facebook.com/{PAGE_OR_OBJECT_ID}/likes。确保将acces_token添加为参数。

我使用AFNetworking发布请求:

NSURL *baseURL = [NSURL URLWithString:@"https://graph.facebook.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:baseURL];

NSString *link = [NSString stringWithFormat:@"/%@/likes", myObjectID];
NSDictionary *params = @{@"access_token" : FBSession.activeSession.accessToken};

[httpClient postPath:link parameters:params success:^(AFHTTPRequestOperation *op, id result) {

    NSLog(@"result %@", result);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"error %@", error);

}];
于 2013-01-14T21:03:20.437 回答
1

这篇文章的更新:-

“随着 Facebook SDK 版本 4.28.0 的发布,iOS 的 Like 按钮已被弃用。它将支持到 2018 年 2 月 5 日。”

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

于 2018-01-23T10:46:24.593 回答
0

试试这个代码:

我认为这肯定会对您有所帮助:

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-06T14:46:08.647 回答