gpt4 book ai didi

iphone - FaceBook iOS - 检查我的 Facebook 应用程序是否已获得授权

转载 作者:太空狗 更新时间:2023-10-30 03:38:17 24 4
gpt4 key购买 nike

我的问题是如何检查我的 FaceBook 应用程序是否已获得用户发布帖子的授权,找不到任何相关信息。

我正在使用:

 Facebook* facebook = [[Facebook alloc] initWithAppId:@"1234567"];
[facebook authorize:[NSArray arrayWithObjects:@"read_stream", @"offline_access",nil] delegate:self];

弹出一个对话框要求我授权该应用程序,完成后我没问题,可以做一个:

 [facebook dialog:@"feed" andDelegate:self];

在该应用上发布笔记。

但是,如果用户阻止或删除了我想在显示发布对话框之前再次授权的应用程序,则无法在调用授权之前找到获取此类信息的方法。

感谢任何帮助。

谢谢。

最佳答案

我也不得不处理这个问题。

调用对话框方法时,您发送一个应符合 FBDialogDelegate 的委托(delegate),它有一个在对话框因错误而无法加载时调用的方法。但如果应用程序未经授权,对话框会向用户显示登录屏幕,但在设置用户和密码后,会出现第二个表单,让用户知道发生了错误。委托(delegate)也被调用,但是收到的错误只是说明他的方法失败了,没有确切的原因,甚至没有错误号。应先以正确的错误调用此方法,以便应用程序可以采取相应的行动。

所以我找到了解决方法,也许这不是最好的方法,但它确实有效。如果应用程序未经用户授权,您通过请求对 Facebook graph api 进行的任何调用都将失败。所以我所做的是在调用提要对话框方法之前进行检查。

在您需要测试应用程序是否仍被授权的地方添加以下行:

if ([facebook isSessionValid])
//isSessionValid only checks if the access token is set, and the expiration date is still valid. Lets make a call and see if we really are authorized to post to this user from this app.
[facebook requestWithGraphPath:@"me" andDelegate:self];
else
//authorize Facebook connect

这只会调用返回用户基本信息的方法。如果一切正常,将从委托(delegate)中调用以下方法:

- (void)request:(FBRequest *)request didLoad:(id)result
{
//Everything is ok. You can call the dialog method. It should work.
}

如果用户未授权该应用,将调用委托(delegate)中的以下方法:

- (void)request:(FBRequest *)request didFailWithError:(NSError *)error;
{
NSString *type = [[[error userInfo] objectForKey:@"error"] objectForKey:@"type"];

if (type)
{
if ([type isEqualToString:@"OAuthException"]) //aha!
{
//user has unauthorized the app, lets logout from Facebook connect. Also clear the access and expiration date tokens
[facebook logout:self];


//Call the authorize method again. Or let the user know they need to authorize the app again.
}
}
}

所以,正如我之前所说,这不是最好的方法,但可以完成工作。希望 Facebook 将添加一种方法来检查这种特定情况,或者向处理未授权应用程序问题的委托(delegate)添加一种新方法。

关于iphone - FaceBook iOS - 检查我的 Facebook 应用程序是否已获得授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com