我试图从我的原生iOS应用程序中找到一个像Facebook页面(facebook.com/[LikePage)这样的商家。我使用FB iOS SDK进行登录/注销。
我已经实现了类似于http://angelolloqui.com/blog/10-Facebook-Like-Button-on-iOS的LIKE按钮,这是webview上社交插件的一个实现。我这样做了,因为我理解为了实现自定义LIKE按钮,我需要使用FB提供的内置类型,这反过来要求我的行为得到FB的批准。
然而,我注意到社交插件实现不能在iOS本机应用程序中使用,只能在移动Web应用程序中使用。 所以,这是我的问题: -
先谢谢。
答案 0 :(得分:2)
没有像Facebook页面那样的API或自动方法。内置的开放式图形操作一旦获得批准,您就可以像其他URL一样使用Open Graph元标记但不包含Facebook页面。
就我所知,Like按钮插件应该可以在webview中使用。
答案 1 :(得分:2)
您可以使用常规NSURLRequest来关注该网页,也可以使用其他资源库对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);
}];
答案 2 :(得分:1)
此帖子的更新: -
"随着Facebook SDK版本4.28.0的发布,iOS的Like按钮已被弃用。它将被支持到2018年2月5日。"
https://developers.facebook.com/docs/sharing/ios/like-button
答案 3 :(得分:0)
尝试此代码:
我认为这肯定会对你有所帮助:
像Widget这样的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方法在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
}
}];
}
享受编码!!!