【问题标题】:Google Plus SDK not refreshing token (iOS)Google Plus SDK 不刷新令牌(iOS)
【发布时间】:2013-12-18 15:01:24
【问题描述】:

使用Google Plus SDK 登录。一开始一切都很好,但似乎 oauth 令牌在大约 1 小时后过期。我正在关注recommendations on Google's site 并使用

[signIn trySilentAuthentication] 

在 viewDidAppear 函数中。

我知道令牌已过期,因为我在服务器上使用 Oauth 并收到 401 响应。

另外值得注意的是,如果 iPhone/iPad 一直插在屏幕上,这不是问题。在这种情况下,应用程序可以无限期地运行而不会出现任何问题。

我的 Cloud Endpoint 上的身份验证失败。我正在初始化服务如下:

static GTLService *service = nil;

if (!service) {
    service = [[GTLServiceMyModel alloc] init];
    service.retryEnabled = YES;
    [service setAuthorizer: [GPPSignIn sharedInstance].authentication];
 }

此外,如果应用程序的令牌已过期,我现在的解决方法是使用 iOS 应用程序切换器关闭应用程序并再次启动应用程序。然后,该应用程序将在令牌过期之前再次运行大约一个小时。

有人遇到过这个问题吗?任何帮助将不胜感激!

【问题讨论】:

    标签: ios oauth google-plus google-oauth google-cloud-endpoints


    【解决方案1】:

    我的问题是我在哪里设置服务的授权人。此代码块仅在第一次调用我的方法时才运行。来自 Java 背景的我并不精通方法中的静态变量。现在我知道了!!只需将 setAuthorizer 移到块外,一切正常。

    static GTLService *service = nil;
    if (!service) {
        service = [[GTLServiceMyModel alloc] init];
        service.retryEnabled = YES;
        [service setAuthorizer: [GPPSignIn sharedInstance].authentication];   
    }
    

    【讨论】:

    • 此代码 sn-p 与您问题中的代码相同?
    • @Patrick 您能否添加更多详细信息,您是如何解决这个问题的?我有同样的问题,不明白,你是在 iOS 端还是在后端解决了这个问题?
    【解决方案2】:

    通常 1 小时后的 401 响应表示刷新访问令牌失败。我遇到的一个原因是,当您使用已经提供刷新令牌的帐户测试应用程序时会发生这种情况。刷新令牌仅发布一次,因此您的后续令牌授权有可能在 3600 秒令牌到期后没有要使用的刷新令牌,因为它已经在您第一次连接时提供。尝试https://accounts.google.com/IssuedAuthSubTokens 并手动撤消此应用对 google+ 的访问权限并重新连接。

    【讨论】:

    • 令人费解的是,如果我重新启动应用程序,它还能正常工作一个小时,有时甚至更长。此外,如果应用程序处于打开状态并且 iPad 正在充电,它永远不会出现问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2013-02-21
    • 2015-07-14
    • 2019-06-29
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多