Sop*_*mer 9 facebook ios facebook-login swift
在Xcode中,如果我创建一个UIView然后添加自定义类FBSDKLoginButton,当我点击它时引导我通过Facebook登录然后将我返回到同一页面FBSDKLoginButton但不是说登录按钮它现在注销.如果点击登录按钮导致新视图,我将如何制作?
我通过cocoapods下载了Facebook SDK,这是我第一次使用它,所以我对此感到困惑.谢谢您的帮助!
ved*_*ucm 25
一种选择是将视图控制器设置为该代理FBSDKLoginButton并实现该loginButton:didCompleteWithResult:error:方法,该方法在使用该按钮登录时调用.
迅速
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var loginButton: FBSDKLoginButton!
override func viewDidLoad() {
super.viewDidLoad()
self.loginButton.delegate = self
}
}
Run Code Online (Sandbox Code Playgroud)
OBJ-C
// ViewController.h
@interface ViewController : UIViewController <FBSDKLoginButtonDelegate>
@property (weak, nonatomic) IBOutlet FBSDKLoginButton *loginButton;
@end
// ViewController.m
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.loginButton.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)
然后,在loginButton:didCompleteWithResult:error:方法中,您可以检查result和error,如果一切正常,则导航到另一个视图.
迅速
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
if ((error) != nil) {
// Process error
}
else if result.isCancelled {
// Handle cancellations
}
else {
// Navigate to other view
}
}
Run Code Online (Sandbox Code Playgroud)
OBJ-C
// ViewController.m
@implementation ViewController
- (void)loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
error:(NSError *)error {
if (error) {
// Process error
}
else if (result.isCancelled) {
// Handle cancellations
}
else {
// Navigate to other view
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在其文档中找到有关如何使用FB登录的详细信息.
在Swift中会是这样的:
class MyViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var loginView : FBSDKLoginButton!
@IBOutlet weak var profilePictureView : FBSDKProfilePictureView!
override func viewDidLoad() {
super.viewDidLoad()
self.loginView.delegate = self
if (FBSDKAccessToken.currentAccessToken() != nil)
{
performSegueWithIdentifier("unwindToViewOtherController", sender: self)
}
else
{
loginView.readPermissions = ["public_profile", "email", "user_friends"]
}
}
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 you ask for multiple permissions at once, you
// should check if specific permissions missing
if result.grantedPermissions.contains("email")
{
// Do work
}
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
println("User Logged Out")
}
}
Run Code Online (Sandbox Code Playgroud)
然后在TargetViewController中添加一个展开函数:
@IBAction func unwindToViewOtherController(segue:UIStoryboardSegue) {
}
Run Code Online (Sandbox Code Playgroud)