#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareLinkContent.h>
#import <FBSDKShareKit/FBSDKShareDialog.h>
#import <FBSDKShareKit/FBSDKShareAPI.h>
#import <FBSDKShareKit/FBSDKShareOpenGraphAction.h>
#import <FBSDKLoginKit/FBSDKLoginManager.h>
#import <FBSDKLoginKit/FBSDKLoginManagerLoginResult.h>
@interface ViewController () <FBSDKSharingDelegate>
@property (nonatomic, strong) NSString *url;
@end
@implementation ViewController
#pragma mark - FBSDKSharingDelegate
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"INFO" message:@"done" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alertView show];
}
- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"INFO" message:@"error" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alertView show];
}
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"INFO" message:@"cancel" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alertView show];
}
#pragma mark - share methods
- (void)useFacebookApp {
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:self.url];
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:nil];
}
- (void)useFacebookSDK {
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:self.url];
[FBSDKShareAPI shareWithContent:content delegate:self];
}
#pragma mark - init action
- (void)doShare
{
if (![FBSDKAccessToken currentAccessToken]) {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
NSLog(@"Process error");
} else if (result.isCancelled) {
// Handle cancellations
} else {
if ([result.grantedPermissions containsObject:@"publish_actions"]) {
[self useFacebookSDK];
} else {
[self useFacebookApp];
}
}
}];
return;
} else if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {
[self useFacebookSDK];
} else {
[self useFacebookApp];
}
return;
}
@end
2015年4月13日 星期一
iOS 開發筆記 - 使用 Facebook SDK 4.0 分享至塗鴉牆與簡易的 publish_actions 權限判斷流程
大概都遵循 Facebook 文件,這邊指紀錄在一個 ViewController 中,啟動分享至使用者塗鴉牆的流程,包括判斷使用者是否安裝過 Facebook app、是否授權 publish_actions 等,以及選擇用 Facebook app 分享或是用 Facebook SDK 分享等。
標籤:
4.0,
facebook,
fb,
iOS,
obj-c,
objc,
objective-c,
publish_actions,
sdk,
share
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言