使用RestClient调用Facebook Graph API。但是,该调用只返回名称和id或已登录的用户。不知道如何设置作用域"public_profile,email",以便呼叫返回电子邮件地址。
Dim client2 = New RestClient("https://graph.facebook.com")
webrequest = New RestRequest("v2.5/me", Method.GET)
webrequest.AddHeader("Authorization", "Bearer " & access_token)
webrequest.AddParameter("client_id", "11111111111111111")
webrequest.AddParameter("access_token", access_token)
webrequest.AddParameter("client_secret", "xxxxxxxxxxxxxxxxxxxxx")
webrequest.AddParameter("redirect_uri", "https://xxxxxxxxxxxxx/fbcallback")
webrequest.AddParameter("scope", "public_profile, email")
webrequest.AddParameter("fields", "id, email,first_name, last_name")
dim res = client2.Execute(webrequest)
这是有效的,但返回一个包含"first_name
"、"last_name
"one_answers"id
"的json。尝试放置scope参数,但没有任何区别。FB配置文件没有问题,因为Javascript Facebook API运行良好。但要求是从服务器端调用api。Javascript API返回"first_name"、"last_name"、"id"、"email"、"verified"和许多其他字段。
有什么意见吗?
---已解决--
感谢@luschn的评论,尝试在对https://www.facebook.com/dialog/oauth
端点的第一次调用中放入scope=public_profile,email
以获得code
(在为code
调用access_token
之前),结果成功了。
scope
是一个仅在授权过程中工作的参数,您正试图将其添加到一个简单的API调用中。在API调用本身中,您只需要Access Token和逗号分隔的字段列表:/me?fields=name,email&access_token=xxx