2015-12-03 33 views
1
import Foundation 
class FacebookShareService { 
    private var shareImage : UIImage! 
    private var shareDescription : String? 

    init(image : UIImage, description : String?) { 
     self.shareImage = image 
     self.shareDescription = description 
    } 

    func start() { 
     if FBSDKAccessToken.currentAccessToken() != nil && FBSDKAccessToken.currentAccessToken().permissions.contains("publish_actions"){ 
      self.startShareToFacebook() 
     } else { 
      getPublishPermission({ (error) ->() in 
       let alert = UIAlertView(title: "Error!!!", message: error.domain, delegate: self, cancelButtonTitle: "Close") 
       alert.show() 
      }, success: {() ->() in 
       self.startShareToFacebook() 
      }) 
     } 
    } 

    private func startShareToFacebook() { 
     let dict : NSMutableDictionary = NSMutableDictionary() 
     if let des = self.shareDescription 
     { 
      dict.setValue(des, forKey: "caption") 

     } 
     dict.setValue(self.shareImage, forKey: "source") 
     FBSDKGraphRequest(graphPath: "me/photos", parameters: dict as [NSObject : AnyObject], HTTPMethod: "POST").startWithCompletionHandler { (conn : FBSDKGraphRequestConnection!, response : AnyObject!, error :NSError!) -> Void in 
      if error != nil { 
       print("Can't use graphApi me/photos") 
       let alert = UIAlertView(title: "Error!!!", message: error.domain, delegate: self, cancelButtonTitle: "Close") 
       alert.show() 
      } else { 
       let alert = UIAlertView(title: "", message: "Successful!!!", delegate: self, cancelButtonTitle: "Close") 
       alert.show() 
      } 
     } 
    } 

    private func getPublishPermission(fail : (error : NSError)->(),success:()->()) { 
     let loginManager : FBSDKLoginManager = FBSDKLoginManager() 
     loginManager.loginBehavior = FBSDKLoginBehavior.Native 
     loginManager.logInWithPublishPermissions(["publish_actions"], handler: { (loginResult:FBSDKLoginManagerLoginResult!, error :NSError!) -> Void in 
      if error != nil { 
       print("Can't login with permission public_action") 
       fail(error: error) 
      } else { 
       if let result = loginResult { 
        if loginResult.isCancelled { 
         print("Can not get permisson") 
         fail(error: NSError(domain: "Can not get permisson", code: 100000, userInfo: nil)) 
        } else { 
         if let permissions = loginResult.grantedPermissions { 
          if permissions.contains("publish_actions") { 
           success() 
          } else { 
           print("Publish actions is not allowed") 
           let error : NSError = NSError(domain: "Publish actions is not allowed", code: 1000, userInfo: nil) 
           fail(error : error) 
          } 
         } else { 
          print("Publish actions is not allowed") 
          let error : NSError = NSError(domain: "Publish actions is not allowed", code: 1000, userInfo: nil) 
          fail(error : error) 
         } 
        } 

       } else { 
        print("Can not get permisson") 
        fail(error: NSError(domain: "Can not get permisson", code: 100000, userInfo: nil)) 
       } 
      } 
     }) 

    } 
} 

上面的代码是不工作的任何一种解决方案或任何种类的现成的来源是needed.in这个代码,他们使用的是旧的SDK,并与新的SDK不兼容。我正在使用最新的ios SDK。急于等待某人的帮助。分享与Facebook没有SLCompose或任何形式的对话

回答

0
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
     [FBSDKProfile enableUpdatesOnAccessTokenChange:YES]; 
     login.loginBehavior = FBSDKLoginBehaviorSystemAccount; 
     [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult result, NSError error) { 
      if (error){ 

      } else if (result.isCancelled){ 

      } else{ 
       if ([result.grantedPermissions containsObject:@"email"]){ 
        if ([FBSDKAccessToken currentAccessToken]){ 
         [self funcGetUserFBInfo]; 
        } 
       } 
      } 
     }]; 

分享

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
       content.contentURL = [NSURL URLWithString:@"http://www.indianic.com/"]; 
       [FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 
       UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
       pasteboard.string = @"“Love only grows by sharing. You can only have more for yourself by giving it away to others”"; 

希望这有助于你

+0

感谢性反应,我的问题是“分享与Facebook没有SLCompose或任何形式的对话” – 2015-12-03 08:50:13

相关问题