Arm*_*min 56 xcode facebook facebook-graph-api ios swift
我的iOS应用程序在注册期间使用Facebook的Graph API请求来获取用户信息,这在升级到Facebook的最新SDK之前工作正常.升级后,我收到一个运行时错误,声明:"FBSDKLog:从Graph API v2.4开始,对/ me的GET请求应该包含一个明确的"fields"参数".
这是代码:
func requestFacebook() {
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else if error == nil
{
let birthday : NSString = (result.valueForKey("birthday") as? NSString)!
var currentDate = NSDate()
var birthdayFormatter = NSDateFormatter()
let userCalendar = NSCalendar.currentCalendar()
birthdayFormatter.dateFormat = "MM/DD/YYYY"
var birthdayNSDate = birthdayFormatter.dateFromString(birthday as String)
var userAge = self.calculateAge(birthdayNSDate!)
PFUser.currentUser()!["age"] = userAge
var facebookID: NSString = (result.valueForKey("id") as? NSString)!
var pictureURL = "https://graph.facebook.com/\(facebookID)/picture?type=large&return_ssl_resources=1"
var URLRequest = NSURL(string: pictureURL)
var URLRequestNeeded = NSURLRequest(URL: URLRequest!)
NSURLConnection.sendAsynchronousRequest(URLRequestNeeded, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!, error: NSError!) -> Void in
if error == nil {
var picture = PFFile(data: data)
PFUser.currentUser()!["picture"] = picture
PFUser.currentUser()!.saveInBackgroundWithBlock({ (success, error) -> Void in
if error == nil {
var userPicture:PFFile = PFUser.currentUser()!.valueForKey("picture") as! PFFile
userPicture.getDataInBackgroundWithBlock { (imageData, error) -> Void in
if error == nil {
self.meProfileImageView.image = UIImage(data: imageData!)
var userName:String = PFUser.currentUser()!.valueForKey("username") as! String
var userAge:Int = PFUser.currentUser()!.valueForKey("age") as! Int
self.meLabel.text = "\(userName), \(userAge)"
self.findFriends()
}
}
} else {
println(error)
}
})
}
else {
println("Error: \(error.localizedDescription)")
}
})
}
})
}
Run Code Online (Sandbox Code Playgroud)
错误消息在以下行:
let birthday : NSString = (result.valueForKey("birthday") as? NSString)!
Run Code Online (Sandbox Code Playgroud)
在升级到Facebook的SDK v4.5.1之前,此代码运行完全正常,但我不知道要改变什么才能使其正常工作.非常感谢能帮助我的人!
Lox*_*oxx 121
这一行需要一个非零的参数值
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
Run Code Online (Sandbox Code Playgroud)
例如,我会扩展更多,这是伪造的代码:
所以对于ObjC来说就是这样,例如,所以上面会看到以下内容:
parameters:@{@"fields": @"id, name"}
Run Code Online (Sandbox Code Playgroud)
在swift中它会是类似的东西
这样的事情:
parameters:["fields": "email"]
Run Code Online (Sandbox Code Playgroud)
这仅适用于两个字段,而且它是psuedo代码,但您需要指定参数
我添加此更新以显示您找到上述字段参数的人员,这里是一个快速链接:
https://developers.facebook.com/docs/graph-api/reference/user
以下信息的格式如下,我刚刚快速完成了这个:
"参数" "类型"
"描述"
id数字字符串
此人的用户帐户的ID.此ID对于每个应用都是唯一的,不能在不同的应用中使用.我们的升级指南提供了有关应用特定ID的更多信息
关于字符串
这个人的个人资料的关于我部分
age_range AgeRange
此人的年龄段表示为最低和最高年龄.例如,超过18,少于21.
生物串
这个人的生物
生日字符串
这个人的生日.这是一个固定格式的字符串,如MM/DD/YYYY.然而,人们可以控制谁可以从月份和日期分别看出他们出生的年份,所以这个字符串只能是年份(YYYY)或月份+日期(MM/DD)
上下文 UserContext
这个人的社会背景
货币汇率
该人的本地货币信息
设备清单
此人正在使用的设备列表.这将仅返回iOS和Android设备
教育清单
这个人的教育
邮件字串
此个人资料中列出的人员主要电子邮件地址.如果没有有效的电子邮件地址,则不会返回此字段
favorite_athletes列表
这个人喜欢的运动员
favorite_teams列表
这个人喜欢运动队
first_name字符串
这个人的名字
性别串
由此人选择的性别,男性或女性.如果将性别设置为自定义值,则将省略此值
家乡页
这个人的故乡
inspirational_people列表
这个人的鼓舞人心
install_type枚举
安装类型
安装 bool
应用程序是否安装了请求?
interest_in list
这个人感兴趣的性别
is_shared_login布尔
这是共享登录(例如,灰色用户)
is_verified布尔
拥有大量粉丝的人可以通过Facebook手动验证其身份的真实性.此字段指示是否以这种方式验证此人的个人资料.这与经过验证的领域不同
语言列表
Facebook页面代表了这个人所知道的语言
last_name字符串
这个人的姓氏
链接字符串
指向此人时间轴的链接
位置页
此人在其个人资料中输入的当前位置.此字段与签到无关
区域设置字符串
这个人的地方
meeting_for列表
这个人有兴趣参加会议
**middle_name字符串
这个人的中间名
名字串
这个人的全名
CoreDefault
name_format字符串
格式化为正确处理中文,日文或韩文订购的人名
payment_pricepoints PaymentPricepoints
该人的支付价格点
test_group unsigned int32
平台测试组
政治串
这个人的政治观点
relationship_status字符串
这个人的关系状况
宗教字符串
这个人的宗教信仰
security_settings SecuritySettings
安全设定
significant_other用户
这个人是重要的其他人
体育名单
体育这个人喜欢
引号字符串
这个人最喜欢的报价
third_party_id字符串
一个字符串,包含该人的匿名但唯一的标识符.您可以将此标识符与第三方一起使用
timezone float(min:-24)(最大值:24)
此人的当前时区偏离UTC
token_for_business字符串
在业务应用程序中使用相同的令牌.访问此令牌需要该人员登录您的应用程序.如果拥有应用程序的企业发生变化,此令牌将会更改
updated_time日期时间
更新时间
shared_login_upgrade_required_by datetime
共享登录需要升级到Business Manager的时间
经过验证的 bool
指示帐户是否已经过验证.这与is_verified字段不同.如果他们采取以下任何行动,则会被视为已验证:
Run Code Online (Sandbox Code Playgroud)Register for mobile Confirm their account via SMS Enter a valid credit cardvideo_upload_limits VideoUploadLimits
视频上传限制
viewer_can_send_gift布尔
观众可以送礼物给这个人吗?
网站字符串
这个人的网站
工作清单
人`s工作经验的细节
public_key字符串
该人的PGP公钥
封面 CoverPhoto
"边缘"
"描述"
favorite_requests
开发人员最喜欢的Graph API请求
request_history
开发人员的Graph API请求历史记录
账户
这个人管理的Facebook页面/是管理员
成就
Facebook游戏取得的成就
adaccounts
此人可以访问的广告帐户
adaccountgroups
广告帐户组
adcontracts
此人的广告合同
admined_groups
将用户管理员分组
adnetworkanalytics
洞察此人的受众网络应用的数据
专辑
这个人创建的相册
apprequests
此人正在等待应用程序的请求
apprequestformerrecipients
应用请求
图书
此人的个人资料中列出的书籍
域
用户管理的域
事件
这个人的活动.默认情况下,这不包括此人拒绝或未回复的事件
家庭
这个人的家庭关系.
stream_filters
可应用于新闻Feed边缘的过滤器列表
好友列表
该人的自定义朋友列表
ids_for_business
业务实体可以使用业务经理声明对多个应用程序的所有权.此边缘返回此用户在任何其他应用程序中具有的ID列表
invitable_friends
可以邀请安装Facebook Canvas应用程序的朋友列表
游戏
这个人喜欢的游戏
组
该人所属的Facebook群组
喜欢
这个人喜欢的所有页面
电影
这个人喜欢的电影
音乐
这个人喜欢的音乐
对象
对象
权限
此人授予此应用的权限
相片
此人被标记或已上传的照片
图片
该人的个人资料图片
tagged_places
这个人的标记的地方列表.它可以包含视频,帖子,状态或链接上的标签
promotable_domains
用户可以推广的所有域名
promotable_events
用户可以推广的所有活动.
taggable_friends
可以通过Graph API发布的内容中标记的朋友
电视
电视节目这个人喜欢
视频
该人被标记或上传的视频
video_broadcasts
这个人的视频广播
应用
这个人是开发者的Facebook应用程序.
签入
这个人签到的签到.
饲料
帖子的提要(包括状态更新)和此人发布的链接.
friendrequests
一个人待定的朋友请求.
朋友
一个人的朋友.
家
一个人的Facebook主页提要.
收件箱
一个人的Facebook消息收件箱.
地点
包含位置信息的帖子和照片供稿,此人已被标记.这对于构建该人访问过的地点的年表非常有用.
共同的朋友
两个人之间的共同朋友名单.
通知
一个人拥有的未读Facebook通知.
发件箱
一个人的Facebook消息发件箱.
问题
一个人创造的问题.
分数
这个人从他们玩过的Facebook游戏中得到的分数.
用户
跟随此人的个人资料.
subscribedto
此人关注的个人资料.
小智 26
使用"fields"作为Key,然后使用逗号分隔您的值
let params = ["fields": "email, friends"]
Run Code Online (Sandbox Code Playgroud)
Jos*_*ván 12
在Obj-C中插入logInWithReadPermissions方法:
parameters:@{@"fields": @"id, name, email"}
Run Code Online (Sandbox Code Playgroud)
如果你在参数中留下nil,你只会在结果对象中收到id和name,尽管你已经设置了例如:
NSArray *permissionsArray = @[ @"email", @"public_profile"];
Run Code Online (Sandbox Code Playgroud)
在文档中不是很清楚,希望它可以帮助.
我遇到了同样的问题,但添加字段选项会在获取用户照片时生成请求错误.我通过添加一个简单parameters:@{@"fields": @""}的代码解决了这个问题:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"me/picture"]
parameters:@{@"fields": @""}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
if (!error) {
// success
} else {
// fail
}}
];
Run Code Online (Sandbox Code Playgroud)
在Swift中,您可以这样声明多个参数:
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "email, first_name, last_name, gender, picture"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42250 次 |
| 最近记录: |