我正在创建一个使用OAuth授权Twitter的活动并发送推文(编辑:我正在使用Twitter4j)。要做到这一点,我必须首先从Twitter请求一个RequestToken,然后用户去浏览器授权应用程序,然后我用intent.getData()中的授权字符串发送回onNewIntent()。我使用RequestToken和字符串来形成有效的AccessToken。
据我了解,由于我的Activity在用户踢出浏览器时离开焦点,因此无法保证一旦我返回onNewIntent(),我的会话状态将可用,这意味着我可能不再拥有用于创建AccessToken的RequestToken。在理想的世界中,我只需将RequestToken保存到SharedPreferences,然后在需要时将其拉出来。然而,在研究之后,这样做是非常重要的,因为我真的无法解构/重建RequestToken对象(AFAIK,如果你不知道,请纠正我,因为这会更加优先)。
所以我正在研究实现onSaveInstanceState()和onRestoreInstanceState(),但我只是没有理解我读过的文档。在这种情况下,当我到达onNewIntent()时,我怎么能保证我的RequestToken对象(最好是我的其余状态)可供我使用?
谢谢, ==马特
答案 0 :(得分:1)
事实证明我不需要持久化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。