В моем приложении есть проигрыватель YouTube, и я пытаюсь добавить в него кнопку «Поделиться в Facebook», чтобы пользователи могли делиться видео с YouTube.
Я использую Facebook SDK 4.1 и успешно реализовал функции входа и обмена. Но пока, если мне нужно сначала войти в систему, а затем поделиться ссылкой.
Как я могу объединить эти два процесса, чтобы у меня была только кнопка «Поделиться», и при нажатии этой кнопки, если у пользователя нет входа в систему, будет отображаться представление входа в систему, если он есть, чем ссылка будет передана. Поэтому мне нужно как-то вызвать функцию входа в кнопку общего доступа. Но так как я новичок в Swift, я не вижу, где здесь действия по клику или как я могу реализовать функцию входа в систему, не нажимая кнопку входа.
Вот мой код:
let contentURL = "https://www.youtube.com/watch?v=jBsPZV14I-k"
let contentURLImage = "http://img.youtube.com/vi/jBsPZV14I-k/0.jpg"
let contentTitle = "sdasfdfsa"
let contentDescription = "asdsadasdasd"
override func viewDidLoad() {
super.viewDidLoad()
if (FBSDKAccessToken.currentAccessToken() != nil)
{
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email", "user_friends"]
loginView.delegate = self
self.returnUserData()
self.showShareButtons()
}
else
{
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email", "user_friends"]
loginView.delegate = self
}
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
println("User Logged In")
if ((error) != nil)
{
// Process error
}
else if result.isCancelled {
// Handle cancellations
}
else {
if result.grantedPermissions.contains("email")
{
// Do work
}
self.returnUserData()
self.showShareButtons()
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
println("User Logged Out")
}
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
println("fetched user: \(result)")
let userName : NSString = result.valueForKey("name") as! NSString
println("User Name is: \(userName)")
let userEmail : NSString = result.valueForKey("email") as! NSString
println("User Email is: \(userEmail)")
}
})
}
func showShareButtons()
{
self.showLinkButton()
}
func showLinkButton()
{
let content : FBSDKShareLinkContent = FBSDKShareLinkContent()
content.contentURL = NSURL(string: self.contentURL)
content.contentTitle = self.contentTitle
content.contentDescription = self.contentDescription
content.imageURL = NSURL(string: self.contentURLImage)
let button : FBSDKShareButton = FBSDKShareButton()
button.shareContent = content
button.frame = CGRectMake((UIScreen.mainScreen().bounds.width - 100) * 0.5, 50, 100, 25)
self.view.addSubview(button)
}