我的iOS应用程序在注册过程中使用了Facebook的Graph API
Request来获取用户信息,在升级到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)")
}
})
}
})
}
错误消息在以下行:
let birthday : NSString = (result.valueForKey("birthday") as? NSString)!
在升级到Facebook的SDK v4.5.1之前,这段代码运行得非常好,但是我不知道现在要进行哪些更改才能使其正常工作。非常感谢任何可以帮助我的人!
该行需要一个非零的参数值
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
例如,我将进一步扩展,这是各种伪代码:
因此对于ObjC来说就是这样,因此上述内容应为以下内容:
parameters:@{@"fields": @"id, name"}
很快就会有类似的事情
像这样的东西:
parameters:["fields": "email"]
这仅用于两个字段,再次是伪代码,但是您需要指定参数
我添加此更新是为了向人们展示您在何处找到上述字段的参数,这是一个快速链接:
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_teams 列表
人喜欢的运动队
first_name 字符串
该人的名字
性别 字符串
此人选择的性别,无论是男性还是女性。如果将性别设置为自定义值,则将忽略此值
家乡 页面
这个人的家乡
spirational_people 列表
这个人的鼓舞人心的人
install_type 枚举
安装类型
已安装的 布尔
发出请求的应用是否已安装?
兴趣 清单
该人感兴趣的性别
is_shared_login 布尔
这是共享登录名(例如,灰色用户)吗?
is_verified 布尔
拥有大量追随者的人可以通过Facebook手动验证其身份的真实性。此字段指示是否以此方式验证了个人资料。这与已验证的字段不同
语言 清单
代表此人知道的语言的Facebook页面
last_name 字符串
该人的姓氏
连结 字串
到该人的时间表的链接
位置 页
他们在个人资料中输入的该人的当前位置。该字段与签到无关
语言环境 字符串
该人的语言环境
Meeting_for 列表
这个人有兴趣开会的目的
** middle_name字符串
该人的中间名
名称 字符串
该人的全名
核心默认
name_format 字符串
该人的姓名格式正确处理了中文,日文或韩文的排序
payment_pricepoints 付款价格点
该人的付款价格点
test_group 无符号int32
平台测试组
政治 串
这个人的政治观点
relationship_status 字符串
人的关系状态
宗教 串
该人的宗教信仰
security_settings 安全设置
安全设定
有意义的 _其他用户
该人的重要他人
体育 清单
运动这个人喜欢
引号 字符串
该人的最爱报价
third_party_id 字符串
一个字符串,其中包含该人的匿名但唯一的标识符。您可以将此标识符与第三方一起使用
时区 浮动(最小值:-24)(最大值:24)
该人当前时区与UTC的偏移量
token_for_business 字符串
在企业的应用程序中相同的令牌。要访问此令牌,需要将该人登录到您的应用程序。如果拥有该应用的企业更改,则此令牌将更改
Updated_time datetime
更新时间
shared_login_upgrade_required_by datetime
共享登录需要通过以下时间升级到Business Manager的时间
经验证的 布尔
指示该帐户是否已通过验证。这与is_verified字段不同。如果有人采取以下任何措施,则认为该人已通过验证:
Register for mobile Confirm their account via SMS Enter a valid credit card
video_upload_limits VideoUploadLimits
视频上传限制
viewer_can_send_gift 布尔
观众可以向这个人发送礼物吗?
网站 字串
该人的网站
工作 清单
一个人的工作经历的细节
public_key 字符串
人的PGP公钥
封面 CoverPhoto
“边缘”
“描述”
favorite_requests
开发人员最喜欢的Graph API请求
request_history
开发人员的Graph API请求历史记录
帐目
此人管理的Facebook页面/是该用户的管理员
成就
Facebook游戏取得的成就
帐户
此人有权访问的广告帐户
adaccountgroups
广告帐户组
广告合同
该人的广告合同
admined_groups
对用户管理员进行分组
广告网络分析
该人的Audience Network应用的见解数据
专辑
此人创建的相册
要求
此人的某个应用程序的待处理请求
申请者的收件人
应用程式要求
图书
此人的个人资料上列出的书
域
用户管理的域
大事记
此人的活动。默认情况下,这不包括该人拒绝或未回复的事件
家庭
此人的家庭关系。
stream_filters
可以应用于新闻订阅源边缘的过滤器列表
朋友清单
此人的自定义朋友列表
ids_for_business
业务实体可以使用业务管理器声明对多个应用程序的所有权。此边缘返回该用户在任何其他应用程序中拥有的ID列表
invitable_friends
可以邀请安装Facebook Canvas应用程序的朋友列表
游戏
此人喜欢的游戏
团体
该人所属的Facebook群组
喜欢
此人顶过的所有页面
电影
此人喜欢的电影
音乐
这个人喜欢的音乐
对象
对象
权限
此人已授予此应用程序的权限
相片
该人被加了标签或已上传的照片
图片
该人的个人资料图片
agged_places
此人的加标签地点列表。它可以包含视频,帖子,状态或链接上的标签
promotable_domains
用户可以推广的所有域
promotable_events
用户可以推广的所有事件。
taggable_friends
可以在通过Graph API发布的内容中标记的朋友
电视
这个人喜欢的电视节目
影片
该人被标记或上传的视频
video_broadcasts
此人的视频广播
应用领域
此人是开发者的Facebook应用程序。
签到
此人进行的签到。
饲料
此人发布的帖子(包括状态更新)和链接的提要。
朋友请求
一个人的未决朋友请求。
朋友们
一个人的朋友。
家
一个人的Facebook主页提要。
收件箱
一个人的Facebook消息收件箱。
地点
包含位置信息且已在其中标记了此人的帖子和照片的供稿。这对于构造人去过的地方的时间顺序很有用。
共同的朋友
两人之间的共同朋友列表。
通知
一个人拥有的未读Facebook通知。
发件箱
一个人的Facebook消息发件箱。
问题
一个人提出的问题。
分数
此人从他们玩过的Facebook游戏中获得的分数。
订户
该人的个人资料。
订阅
The profile that this person is following.
问题内容: 我的应用程序中有一个奇怪的异常,我想记录它发生的时间,并包括完整的请求字符串(包括参数)。 当我尝试 我得到了请求字符串,但没有得到包含的参数?和&。 例: 我只看到 我可以把整个字符串放在某个地方吗? 问题答案: 参见HttpServletRequest#getQueryString() 如果需要整个字符串,则必须将请求url和查询字符串附加在一起,因为没有方法可以获取整个字符串。
问题内容: 我是新手,所以我的代码可能会出现很多错误,但是我要实现的目标是将GET请求发送到带有 参数的服务器。鉴于我的函数有两个参数,我试图做到更多。我不确定如何将两者结合到实际的URLRequest中?到目前为止,这是我尝试过的 问题答案: 建立请求时,请求的主体没有,但是所有内容都放在URL上。要构建网址(并正确地将其转义), 您还可以使用. 唯一的窍门是,大多数Web服务都需要+转义字符百
可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title
可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title
我知道ICMP请求包含IP地址。客户机MAC地址是否包含在ICMP请求中?ping请求中还包括哪些其他信息(如果有的话)?
我正在尝试使用RestTemplate将外部API集成到我的Spring MVC应用程序中。 除非我不必将JSON作为请求参数传递给API调用,否则它工作得非常好。这样的尝试每次都会导致,就我在API日志中查看的情况而言,我的JSON参数没有被API解码(它看起来仍然像编码字符串)。 我认为它可能与我请求中的标头有关,但一旦我添加了和,错误仍然相同。有人能给我一个建议我的实现可能有什么问题吗? 事