Facebook登录给我已经授权这个应用程序每次
Posted
技术标签:
【中文标题】Facebook登录给我已经授权这个应用程序每次【英文标题】:Facebook login give me already authorized this app everytime 【发布时间】:2013-04-17 16:26:33 【问题描述】:我正在使用 Facebook SDK 进行 facebook 集成 .. 我有 uibutton,我使用它来登录 facebook 并在 facebook 上分享详细信息
我正在使用 FBSession 登录
[FBSession.activeSession openWithCompletionHandler:^(FBSession *session, FBSessionState state,NSError *error)
我可以登录 facebook .. 但是当我尝试分享时,即使用户已经授权,它也会进入授权页面。我不希望这个页面出现在第一次之外。如何确保每次用户想在 Facebook 上分享时都不会出现此页面
在 plist 文件中我提供了正确的应用程序 ID 和 urlscheme fbappid 以及在我的 appdelegate 中我添加了 handleopenurl ,打开会话
【问题讨论】:
我建议问题的标题与其内容不符:) pavan309 的回答对 title 的含义很有帮助 【参考方案1】:为了不被问到您是否要授权您的应用程序(尽管您已经获得授权),您必须重复使用旧令牌。您每次都在制作一个新的,因此 facebook API 会要求您确认。
编辑: (@Slavco Petkovski 在 cmets 中建议)
在使用之前验证您保存的访问令牌:
if (![FBSDKAccessToken currentAccessToken] ||
[FBSDKAccessToken currentAccessToken].expirationDate.timeIntervalSince1970 < now.timeIntervalSince1970)
// initiate request for a new token
【讨论】:
(已删除评论的评论)不完全正确。在我回复的那一刻,我们(开发人员)最好将访问令牌保存在某个地方(在钥匙串、数据库、核心数据或其他任何地方),并在每次您想使用 FB 时重复使用它。但是由于每个令牌都有一个到期日期,因此您必须先检查它是否仍然有效 是的,我编辑有问题。我这样做 if (![FBSDKAccessToken currentAccessToken] && ([FBSDKAccessToken currentAccessToken].expirationDate.timeIntervalSince1970 好吧,虽然我已经很久没有使用 FB SDK 了,但对我来说看起来不错) @SlavcoPetkovski 在我评估它不值得添加到答案之前,该版本的格式是。如果您 100% 确定您在评论中建议的代码是有效的,您可以使用代码块再次创建一个版本,我会接受它【参考方案2】:这是因为您已经在 facebook 上授予了此特定应用程序的权限。 尝试使用新帐户,系统会要求您提供权限。
编辑
尝试使用
`+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions
allowLoginUI:(BOOL)allowLoginUI
completionHandler:(FBSessionStateHandler)handler;`
使用completionHandler中自带的会话对象
【讨论】:
新账户在哪个账户??你有示例代码吗? 标题答案:之前未授权的任何其他 Facebook 帐户。如果您使用我在答案中给出的方法,则每次分享时都不需要切换到 Facebook 应用 ..我应该在哪里添加这个方法? ..你有他们使用这种方法的例子吗? 可以看例子here 我什至试过它仍然要求我授权...我会给我项目你能帮我吗以上是关于Facebook登录给我已经授权这个应用程序每次的主要内容,如果未能解决你的问题,请参考以下文章
Facebook登录给我已经授权我的应用程序,而不自动返回应用程序
解析 Facebook 登录始终显示 Facebook 页面“您已授权此应用”
Swift:登录时是不是可以避免 Facebook SDK 4.x “您已经授权此应用程序”对话框?