我正在制作一个使用OAuth通过Twitter授权并发送推文的活动(编辑:我正在使用Twitter4j)。为此,我必须首先从Twitter请求一个RequestToken,然后用户进入浏览器以授权该应用程序,然后使用intent.getData()中的授权字符串将我发送回onNewIntent()。我使用RequestToken和字符串形成有效的AccessToken。
据我了解,由于当用户踢出浏览器时我的Activity保持了焦点,因此无法保证一旦我返回onNewIntent(),我的会话状态将可用,这意味着我可能不再拥有带有用来制作AccessToken。在理想情况下,我只将RequestToken保存到SharedPreferences中,并在以后需要时将其拉出。但是,在研究之后,执行此操作非常重要,因为我确实无法解构/重构RequestToken对象(AFAIK,如果您不知道,请更正我,因为这会更可取)。
因此,我正在研究实现onSaveInstanceState()和onRestoreInstanceState(),但我只是不掌握已阅读的文档。在这种情况下,如何保证在我到达onNewIntent()时可以使用我的RequestToken对象(最好是状态的其余部分)?
谢谢,
==马特
最佳答案
事实证明,我不需要持久保存RequestToken,因为我可以在没有它的情况下构建AccessToken。可以使用A)RequestToken + oauth_verifier或B)access_token + access_token_secret字符串来构建AccessToken。
因此,我使用RequestToken来获取oauth_verifier,并以此创建一个AccessToken,然后从AccessToken中提取access_token和access_token字符串,并将其存储。稍后,我可以使用存储的access_token和access_token_secret字符串重建AccessToken。
关于android - 如何通过 Activity 生命周期保持Twitter OAuth session 状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11277736/