Android 我是否每次都必须遵循OAuth工作流(请求令牌->;访问令牌->;API调用)?

Android 我是否每次都必须遵循OAuth工作流(请求令牌->;访问令牌->;API调用)?,android,twitter-oauth,twitter4j,Android,Twitter Oauth,Twitter4j,好的,我是OAuth的新手,我正在创建一个与Twitter集成的应用程序 我正在使用Twitter4j并遵循他们的指示。没问题 我可以要求用户授权我的应用程序 我将请求令牌交换为访问令牌 一旦用户启动应用程序,我将序列化该对象 下面是序列化是如何发生的 FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOut

好的,我是OAuth的新手,我正在创建一个与Twitter集成的应用程序

我正在使用Twitter4j并遵循他们的指示。没问题

  • 我可以要求用户授权我的应用程序
  • 我将请求令牌交换为访问令牌
  • 一旦用户启动应用程序,我将序列化该对象
  • 下面是序列化是如何发生的

    FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_PRIVATE);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(accessToken);
    oos.close();
    
因此,当需要再次使用访问令牌时,我只需将对象理想化,然后分配给新的Twitter对象并调用状态更新,如下所示:

AccessToken twitterToken = objectDeserialization();
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(twitterApiKey, twitterApiSecret);
twitter.setOAuthAccessToken(twitterToken);
twitter4j.Status status = twitter.updateStatus("This is sparta! :)");
问题是我拿到了401

无论我读到哪里,我都确信我不应该再经历整个代币交换过程。我错了吗?

也许我应该简单地存储访问令牌和访问令牌机密,然后从头创建一个新对象,而不是反序列化一个旧对象?


感谢您的帮助:-)

好的,我设法解决了我的问题,解决方案是:只保存令牌和令牌密钥,然后创建一个新对象

AccessToken twitterToken = objectDeserialization();
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(twitterApiKey, twitterApiSecret);
twitter.setOAuthAccessToken(new AccessToken(twitterToken.getToken(), twitterToken.getTokenSecret()));
twitter4j.Status status = twitter.updateStatus("This is sparta! :)");