Facebook 权限 iOS
Facebook Permissions iOS
所以我在摆弄 Facebook 的 iOS SDK,并设法让用户登录到我的应用程序。我在故事板上有一个 UIView
设置,它是 FBSDKLoginButton
class,根据 this,它只是 UIButton
的子 class。然后我创建了一个 @IBOutlet weak var facebookLogInBtn: FBSDKLoginButton!
。然后我去设置我的权限
override func viewDidLoad()
{
super.viewDidLoad()
facebookLogInBtn.delegate = self
facebookLogInBtn.readPermissions = ["public_profile", "email", "user_friends"]
}
这工作得很好,完成了我想要的任务和我需要的任何额外权限,我只是将它们附加到 facebookLoginBtn.readPermissions
数组。但是在谷歌搜索之后,我发现了一堆使用 FBSDKGraphRequest
和 FBSDKLoginManager
的网站。以这个 blog 为例。现在我的问题是:
- 我的方式被认为是可以接受的还是有问题的?它有效,但我只是想确定我是否遵循标准程序。
- 我的方法如何以某种方式与通过图表获取数据联系起来 API?因为我明确没有声明任何
FBSDKRequest
或 FBSDKLoginManager
对象。我只是添加了我的按钮,然后实现了它的 delegates
瞧!我正在访问。无需解析任何 JSON 数据或任何东西。
- 我还注意到,这些网站中的大多数实际上从未将它们的
UIView
变成 FBSDKLoginButton
的 class。这可能是他们必须处理所有事情的原因吗'manually'?
如有任何帮助,我们将不胜感激。
干杯!
我的做法是正确的,但我无法用它检索任何用户数据。使用 FBSDKLoginManager
对象,Facebook 会为我处理所有事情,它只会 return 用户的最终响应(同意与否),但没有我通过 readPermissions
数组请求的任何实际数据。对于任何数据检索;甚至可能写道,我必须为它创建一个 FBSDKGraphRequest
对象。总之,我最终让 Facebook 使用 FBSDKLoginManager
处理登录和注销,成功后,我使用 FBSDKGraphRequest
检索用户数据,如下所示
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
if error != nil
{
print("Facebook Log In Failed")
print(error.localizedDescription)
}
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "\(FacebookPermission.NAME), \(FacebookPermission.FIRST_NAME), \(FacebookPermission.LAST_NAME), \(FacebookPermission.EMAIL)"])
graphRequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result:AnyObject!, error: NSError!) in
if error == nil
{
print("Data retrieval was successful")
}
else
{
print("Facebook Graph Request Error")
print(error)
}
}
}
所以我在摆弄 Facebook 的 iOS SDK,并设法让用户登录到我的应用程序。我在故事板上有一个 UIView
设置,它是 FBSDKLoginButton
class,根据 this,它只是 UIButton
的子 class。然后我创建了一个 @IBOutlet weak var facebookLogInBtn: FBSDKLoginButton!
。然后我去设置我的权限
override func viewDidLoad()
{
super.viewDidLoad()
facebookLogInBtn.delegate = self
facebookLogInBtn.readPermissions = ["public_profile", "email", "user_friends"]
}
这工作得很好,完成了我想要的任务和我需要的任何额外权限,我只是将它们附加到 facebookLoginBtn.readPermissions
数组。但是在谷歌搜索之后,我发现了一堆使用 FBSDKGraphRequest
和 FBSDKLoginManager
的网站。以这个 blog 为例。现在我的问题是:
- 我的方式被认为是可以接受的还是有问题的?它有效,但我只是想确定我是否遵循标准程序。
- 我的方法如何以某种方式与通过图表获取数据联系起来 API?因为我明确没有声明任何
FBSDKRequest
或FBSDKLoginManager
对象。我只是添加了我的按钮,然后实现了它的delegates
瞧!我正在访问。无需解析任何 JSON 数据或任何东西。 - 我还注意到,这些网站中的大多数实际上从未将它们的
UIView
变成FBSDKLoginButton
的 class。这可能是他们必须处理所有事情的原因吗'manually'?
如有任何帮助,我们将不胜感激。 干杯!
我的做法是正确的,但我无法用它检索任何用户数据。使用 FBSDKLoginManager
对象,Facebook 会为我处理所有事情,它只会 return 用户的最终响应(同意与否),但没有我通过 readPermissions
数组请求的任何实际数据。对于任何数据检索;甚至可能写道,我必须为它创建一个 FBSDKGraphRequest
对象。总之,我最终让 Facebook 使用 FBSDKLoginManager
处理登录和注销,成功后,我使用 FBSDKGraphRequest
检索用户数据,如下所示
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
if error != nil
{
print("Facebook Log In Failed")
print(error.localizedDescription)
}
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "\(FacebookPermission.NAME), \(FacebookPermission.FIRST_NAME), \(FacebookPermission.LAST_NAME), \(FacebookPermission.EMAIL)"])
graphRequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result:AnyObject!, error: NSError!) in
if error == nil
{
print("Data retrieval was successful")
}
else
{
print("Facebook Graph Request Error")
print(error)
}
}
}