1

ネイティブの iOS アプリケーションからビジネスの Facebook Like ページ (facebook.com/[LikePage]) に LIKE しようとしています。ログイン/ログアウトの目的で FB iOS SDK を使用しました。

http://angelolloqui.com/blog/10-Facebook-Like-Button-on-iOSに似た LIKE ボタンを実装しました。これは、Web ビューでのソーシャル プラグインの実装です。カスタムの LIKE ボタンを実装するには、FB が提供する組み込みの Like を使用する必要があることを理解しているため、そうしました。これには、私のアクションが FB によって承認される必要があります。

ただし、ソーシャル プラグインの実装は iOS ネイティブ アプリケーションでは使用できず、モバイル Web アプリでのみ使用できることに気付きました。だから、ここに私の質問があります:-

  1. ネイティブの iOS アプリケーションは、Facebook が提供するソーシャル プラグインを使用して Facebook ページに「いいね!」を付けることができないというのは本当ですか?
  2. プラグインではなく、カスタムの Like ボタンを作成するには、Facebook が提供する組み込みの Likes を使用する必要があるというのは本当ですか? (私の場合は、LIKE a Page)
    必要なのは具体的なドキュメントだけで、どちらが最善の方法であるかを明確に知ることができます。
    参考までに、LIKE する必要があるビジネス ページの URL は、サーバーから動的に取得されます。

前もって感謝します。

4

4 に答える 4

2

Facebook ページに「いいね!」をするための API や自動メソッドはありません。組み込みのグラフを開くアクションが承認されると、Facebook ページではなく、グラフを開くメタ タグを持つ他の URL を好きにできます。

私の知る限り、いいねボタン プラグインは 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 に答える
0

このコードを試してください:

これはきっとあなたを助けると思います:

Fb のようなウィジェットをアプリケーションに埋め込むことができます。webView を追加して、Fb Like Widget html コード/URL hereを取得するだけです。

fbのようなボタンを追加するViewController.hで:

#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 ボタン ウィジェットを追加します。

-(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 に答える