Moh*_*och 85 facebook facebook-graph-api
我有一个Facebook桌面应用程序,我正在使用Graph API.我能够获得访问令牌,但在此之后 - 我不知道如何获取用户的ID.
我的流程是这样的:
我将用户发送到https://graph.facebook.com/oauth/authorize并具有所有必需的扩展权限.
在我的重定向页面中,我从Facebook获取代码.
然后我用我的API密钥对graph.facebook.com/oauth/access_token执行HTTP请求,然后在响应中获取访问令牌.
从那时起,我无法获得用户ID.
怎样才能解决这个问题?
ser*_*erg 150
如果您想使用Graph API获取当前用户ID,那么只需向以下位置发送请求:
https://graph.facebook.com/me?access_token=...
Run Code Online (Sandbox Code Playgroud)
pas*_*lus 29
最简单的方法是
https://graph.facebook.com/me?fields=id&access_token="xxxxx"
Run Code Online (Sandbox Code Playgroud)
然后你会得到只包含userid的json响应.
facebook访问令牌也看起来类似"1249203702 | 2.h1MTNeLqcLqw __.86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"
如果你使用|提取中间部分 分裂你得到
2.h1MTNeLqcLqw __.86400.129394400-605430316
再分裂 -
最后一部分605430316是用户ID.
以下是从访问令牌中提取用户ID的C#代码:
public long ParseUserIdFromAccessToken(string accessToken)
{
Contract.Requires(!string.isNullOrEmpty(accessToken);
/*
* access_token:
* 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
* |_______|
* |
* user id
*/
long userId = 0;
var accessTokenParts = accessToken.Split('|');
if (accessTokenParts.Length == 3)
{
var idPart = accessTokenParts[1];
if (!string.IsNullOrEmpty(idPart))
{
var index = idPart.LastIndexOf('-');
if (index >= 0)
{
string id = idPart.Substring(index + 1);
if (!string.IsNullOrEmpty(id))
{
return id;
}
}
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
警告: 访问令牌的结构未记录,可能并不总是符合上述模式.需要您自担风险使用它.
更新 由于Facebook的变化.从加密访问令牌获取userid的首选方法如下:
try
{
var fb = new FacebookClient(accessToken);
var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
return (string)result["id"];
}
catch (FacebookOAuthException)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您只需要点击另一个Graph API:
https://graph.facebook.com/me?access_token={access-token}
Run Code Online (Sandbox Code Playgroud)
它还将提供您的电子邮件ID和用户ID(对于Facebook)。
| 归档时间: |
|
| 查看次数: |
141936 次 |
| 最近记录: |