我正在使用parse sdk进行游戏的后端管理。对于用户注册/登录解析api请求参数tokenExpiration。我不知道如何从facebook unity sdk获取它。 https://www.parse.com/docs/unity_guide#fbusers-signup
Task<ParseUser> logInTask = ParseFacebookUtils.LogInAsync(accessToken, userId, tokenExpiration);
答案 0 :(得分:3)
我自己使用debug_token解决了这个问题。这是关于如何做的正确代码。
FB.API("/debug_token?input_token="+FB.AccessToken+"&access_token="+FB.AccessToken,Facebook.HttpMethod.GET, AccessTokenCallback);
function AccessTokenCallback(response:String){
Debug.Log(response);
var access = JSON.Parse(response);
Debug.Log("Token Expiration is: "+access["data"]["expires_at"].Value);
}
如果您打印响应,它将为您提供一个JSON,其中包含有关访问令牌的所有信息,您可以获取有关访问令牌的所需信息。
答案 1 :(得分:1)
打开FacebookAccessTokenEditor.cs并替换原始第81行:
formData["batch"] = "[{\"method\":\"GET\", \"relative_url\":\"me?fields=id\"},{\"method\":\"GET\", \"relative_url\":\"app?fields=id\"}]";
这两个:
string getExpiresAt = ",{\"method\":\"GET\", \"relative_url\":\"debug_token?input_token="+accessToken+"\"}";
formData["batch"] = "[{\"method\":\"GET\", \"relative_url\":\"me?fields=id\"},{\"method\":\"GET\", \"relative_url\":\"app?fields=id\"}"+getExpiresAt+"]";
然后在第220行之前打开FacebookEditor.cs并在方法MockLoginCallback中打开:
isLoggedIn = true;
插入以下行:
var tokenData = (Dictionary<string, object>)MiniJSON.Json.Deserialize(responses[2]);
var expiresAt = (long)((Dictionary<string, object>)tokenData["data"])["expires_at"];
accessTokenExpiresAt = FromTimestamp((int)expiresAt);
另外,添加缺少的函数FromTimestamp,你可以从AndroidFacebook.cs或IOSFacebook.cs或jus副本从这里复制:
private DateTime FromTimestamp(int timestamp)
{
return new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(timestamp);
}
最后,您可以像在IOS或Android或Web上一样调用解析方法:
Task<ParseUser> logInTask = ParseFacebookUtils.LogInAsync(FB.UserId, FB.AccessToken, FB.AccessTokenExpiresAt);
注意:由于我已经处理过代码,我不确定原始行号,但我认为它们是正确的。此外,这并不反映最佳编码实践,但由于它仅在调试环境中使用,因此它们对我来说足够好。