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")
}
现在在我的主视图中,我可以像这样获取访问令牌:
let accessToken = FBSDKAccessToken.currentAccessToken()
if(accessToken != nil) //should be != nil
{
print(accessToken.tokenString)
}
我如何从登录的用户那里获得名称和电子邮件,使用较旧的SDK或使用Objective-C,我会看到许多问题和答案。
我已经fields
在android中使用过,所以我想也可以在iOS中尝试它,并且可以使用。
let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: accessToken.tokenString, version: nil, HTTPMethod: "GET")
req.startWithCompletionHandler({ (connection, result, error : NSError!) -> Void in
if(error == nil) {
print("result \(result)")
} else {
print("error \(error)")
}
}
)
结果将打印:
result {
email = "email@example.com";
id = 123456789;
name = "Your Name";
}
发现这些字段等于User
端点,请查看此链接,您可以在其中看到可以获取的所有字段。
Swift 4及更高版本的更新
let r = FBSDKGraphRequest(graphPath: "me",
parameters: ["fields": "email,name"],
tokenString: FBSDKAccessToken.current()?.tokenString,
version: nil,
httpMethod: "GET")
r?.start(completionHandler: { test, result, error in
if error == nil {
print(result)
}
})
使用FBSDKLoginKit 6.5.0更新Swift 5
guard let accessToken = FBSDKLoginKit.AccessToken.current else { return }
let graphRequest = FBSDKLoginKit.GraphRequest(graphPath: "me",
parameters: ["fields": "email, name"],
tokenString: accessToken.tokenString,
version: nil,
httpMethod: .get)
graphRequest.start { (connection, result, error) -> Void in
if error == nil {
print("result \(result)")
}
else {
print("error \(error)")
}
}
我一直试图获取电子邮件正文与imap_fetchbody($stream,$msgno,$选项),但没有成功。 然后我尝试使用imap_fetchstructure($stream,$msgno),并使用各自的子类型手动解码每种类型,如:- 对于前两个,我可以用这样的东西来解码 但说到混合,我要么不知道,要么我该怎么办,要么我在哪里犯错。
在上一章中,我们学习了如何查看电子邮件。 现在让我们看看如何获取每封电子邮件并阅读其内容。 让我们编写一个Java类FetchingEmail ,它将读取以下类型的电子邮件: 简单邮件 电子邮件附件 使用内联图片发送电子邮件 代码中遵循的基本步骤如下: 获取Session对象。 创建POP3商店对象并连接到商店。 创建文件夹对象并在邮箱中打开相应的文件夹。 检索邮件。 分别关闭文件夹和存储对象
使用 Java 发送电子邮件,我如何让名称打印在电子邮件地址旁边,最好是这种样式? 我把我的电子邮件列表放在a *里了。包含如下数据的属性文件: 我正在使用此函数将属性文件中的每个电子邮件列表(如“email_list_3”)作为数组列表返回: private static ArrayList sete mail list(String email _ list _ name)抛出异常{ Prop
我正在使用新的Google Drive Android API,我可以连接,并且可以做它允许我做的所有事情,但为了使用电子表格服务,我需要从登录用户中提取帐户名/电子邮件。 我该怎么做? 下面是我连接Google Drive API的代码。它工作得很好。 这里是我使用电子表格服务API的地方,但我需要帐户名来获取令牌。 我尝试过添加以下内容: ...在方法中,但它抛出了一个。 此外,以下是我的权限
我正在尝试从GitHub获取一个用户的电子邮件地址,我只是在使用Postman测试过程。我有一个令牌,它有user和user:email作用域,点击https://api.github.com/user可以得到用户的信息。私人电子邮件在该endpoint不可见,所以我也点击https://api.github.com/user/emails。电子邮件endpoint给了我一个404。 与404一起
我在我的系统中使用谷歌广告API PHP库。但是我没有在这里提供的API列表中找到以下2个APIhttps://developers.google.com/google-ads/api/docs/account-management/create-account: API,以查明用户是否已经存在使用电子邮件的谷歌广告帐户?如果找到,则返回其10位数的客户ID。 我在几个网站上见过同样的过程。每当用