Ios 错误:必须使用活动访问令牌来查询有关当前用户的信息
我面临着上述错误。我知道这已经讨论过了,但是他们使用Ios 错误:必须使用活动访问令牌来查询有关当前用户的信息,ios,objective-c,facebook,facebook-graph-api,Ios,Objective C,Facebook,Facebook Graph Api,我面临着上述错误。我知道这已经讨论过了,但是他们使用FBSession进行了修复。在最新的SDK中,我没有看到FBSession。请帮帮我,我一整天都在忙这个 下发问题: 我有3个页面(登录页面,用户名页面,查找朋友页面)。在登录页面中,我只是通过facebook进行身份验证,并从graphAPI获取用户信息,它工作正常。然后来到这里的页面用户名正常注册过程中从用户。然后我来到这里的“查找好友”页面,我面临的问题是,如果我使用流(登录->用户名->查找好友页面),我可以使用graphAPI列出f
FBSession
进行了修复。在最新的SDK中,我没有看到FBSession。请帮帮我,我一整天都在忙这个
下发问题:
我有3个页面(登录页面,用户名页面,查找朋友页面)。在登录页面中,我只是通过facebook进行身份验证,并从graphAPI获取用户信息,它工作正常。然后来到这里的页面用户名正常注册过程中从用户。然后我来到这里的“查找好友”页面,我面临的问题是,如果我使用流(登录->用户名->查找好友页面),我可以使用graphAPI列出facebook好友,但是当我关闭应用程序并直接打开此页面时,我无法获得好友列表,上面显示了错误。我不知道如何从这件事中恢复过来。请帮助以前有这种感觉的人
下面是我的代码,
查找朋友页面:
注:
当我关闭应用程序并再次返回用户名页面时,当前访问令牌为空 明白了
这肯定会对某人有所帮助,实际上我在这里犯了错误,[[FBSDKGraphRequest alloc]initWithGraphPath:url参数:@{@“fields”:@“id,picture”}]
此方法从未启用过访问令牌。但奇怪的是,整个应用中都没有启用访问令牌。在杀死应用后,当我移动到下一页时,它将为空。因此,我只将令牌字符串保存在NSUserDefault中,如
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:url parameters:@{ @"fields": @"id,picture"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
NSLog(@"result === %@",result);
if (!error)
{}
else
{}
}];
}
else
{
NSLog(@"There is no current access token");
}
然后无论我在哪里调用graphAPI,我都会使用这个方法,比如tokenstring
NSString *access_token=[FBSDKAccessToken currentAccessToken].tokenString;
[NSUSER setObject:access_token forKey:@"fb_token"];
[NSUSER synchronize];
很简单,但要花很长时间才能找到。很高兴!明白了
这肯定会对某人有所帮助,实际上我在这里犯了错误,[[FBSDKGraphRequest alloc]initWithGraphPath:url参数:@{@“fields”:@“id,picture”}]
此方法从未启用过访问令牌。但奇怪的是,整个应用中都没有启用访问令牌。在杀死应用后,当我移动到下一页时,它将为空。因此,我只将令牌字符串保存在NSUserDefault中,如
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:url parameters:@{ @"fields": @"id,picture"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
NSLog(@"result === %@",result);
if (!error)
{}
else
{}
}];
}
else
{
NSLog(@"There is no current access token");
}
然后无论我在哪里调用graphAPI,我都会使用这个方法,比如tokenstring
NSString *access_token=[FBSDKAccessToken currentAccessToken].tokenString;
[NSUSER setObject:access_token forKey:@"fb_token"];
[NSUSER synchronize];
很简单,但查找时间太长。很高兴!这将在swift 2.0中帮助您
[[[FBSDKGraphRequest alloc] initWithGraphPath:url parameters:@{ @"fields": @"id,picture"} tokenString:[NSUSER objectForKey:@"fb_token"] version:nil HTTPMethod:@"GET"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
}];
这将在swift 2.0中帮助您
[[[FBSDKGraphRequest alloc] initWithGraphPath:url parameters:@{ @"fields": @"id,picture"} tokenString:[NSUSER objectForKey:@"fb_token"] version:nil HTTPMethod:@"GET"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
}];
对我来说工作很好斯威夫特3 将此代码放在收到好友列表或fb用户数据的位置:have look
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
}
对我来说工作很好斯威夫特3 将此代码放在收到好友列表或fb用户数据的位置:have look
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
}
我认为这是Facebook的一个bug,您需要这样的调用图api:
let token = FBSDKAccessToken.current().tokenString
UserDefaults.standard.setValue(token, forKey: "fb_token")
UserDefaults.standard.synchronize()
let params = ["fields": "id, first_name, last_name, name, picture"]
let graphRequest = FBSDKGraphRequest(graphPath: "/me/friends", parameters: params, tokenString: UserDefaults.standard.value(forKey: "fb_token") as! String, version: nil, httpMethod: "GET")
只需将access_令牌放在请求url中,其他参数放在param‘parameters:’我认为这是Facebook的一个bug,您需要这样的调用图api:
let token = FBSDKAccessToken.current().tokenString
UserDefaults.standard.setValue(token, forKey: "fb_token")
UserDefaults.standard.synchronize()
let params = ["fields": "id, first_name, last_name, name, picture"]
let graphRequest = FBSDKGraphRequest(graphPath: "/me/friends", parameters: params, tokenString: UserDefaults.standard.value(forKey: "fb_token") as! String, version: nil, httpMethod: "GET")
只需将access_令牌放在请求url中,其他参数放在param'参数:'