TL; TR:如何使用facebook SDK 4.4获取在我的应用程序上登录的用户的电子邮件和名称
到目前为止,我已经设法登录工作,现在我可以从应用程序的任何位置获取当前访问令牌.
我如何配置登录视图控制器和Facebook登录按钮:
class LoginViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var loginButton: FBSDKLoginButton!
override func viewDidLoad() {
super.viewDidLoad()
if(FBSDKAccessToken.currentAccessToken() == nil)
{
print("not logged in")
}
else{
print("logged in already")
}
loginButton.readPermissions = ["public_profile","email"]
loginButton.delegate = self
}
//MARK -FB login
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
//logged in
if(error == nil)
{
print("login complete")
print(result.grantedPermissions)
}
else{
print(error.localizedDescription)
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
//logout
print("logout")
}
Run Code Online (Sandbox Code Playgroud)
现在在我的主视图中,我可以获得访问令牌,如下所示:
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过facebook sdk获取信息,但到目前为止我只获得用户的ID和名称,虽然我确定有可用的电子邮件,因为这是我的帐户.我一直在寻找几个答案,但到目前为止他们都没有解决我的问题.我做错了什么,为什么在我请求多个权限时它没有返回更多数据?
这是我的代码:
fbLoginManager.logInWithReadPermissions(["public_profile", "email", "user_friends", "user_about_me", "user_birthday"], handler: { (result, error) -> Void in
if ((error) != nil)
{
// Process error
println("There were an error: \(error)")
}
else if result.isCancelled {
// Handle cancellations
fbLoginManager.logOut()
}
else {
var fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
println(fbloginresult)
self.returnUserData()
}
}
})
Run Code Online (Sandbox Code Playgroud)
以及获取用户数据的功能:
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process …Run Code Online (Sandbox Code Playgroud) 按照本教程,我设法使Facebook登录按钮工作.但是,它会自动从SDK中分配按钮图像,并且无法自定义(因为它没有在Storyboard上创建),因此我无法使用自己的按钮图像或文本.
我相信这部分代码(在ViewDidLoad中)是分配按钮:
let loginView : FBSDKLoginButton = FBSDKLoginButton()
self.view.addSubview(loginView)
loginView.center = self.view.center
loginView.readPermissions = ["public_profile", "email"]
loginView.delegate = self
Run Code Online (Sandbox Code Playgroud)
我需要做的是在Storyboard上创建一个@IBOutlet按钮并从那里进行自定义.我怎样才能做到这一点?