だから私は最近 iOS 開発を始めたばかりで、PodioKitライブラリを使用して Podio とやり取りしています。電子メールとパスワードを使用してサーバーで認証した後、OAuth トークンを返します。これには、必要なデータ、リフレッシュ トークンなどが含まれます。
ユーザーがアプリの使用間でログインし続けるために、OAuth トークンはキーチェーンに保存され、アプリの起動時に再度アクセスされることになっています。JNKeychainを使用してそれらをキーチェーンに格納してきましたが、問題なく動作しているようです。ただし、キーチェーンからトークンを取得すると、データは同じではありません。つまり、何かをしようとすると、PodioKit が「リフレッシュ トークンが見つかりません」というエラーをスローします。これらの NSLog 出力の違いを確認できます。
キーチェーンに保存する前に:
2014-01-23 15:40:38.069 PodioKPITest[377:60b] oauthToken: <PKOAuth2Token: 0x16d59390>
2014-01-23 15:40:38.071 PodioKPITest[377:60b] oauthToken.refData: {
id = 1883826;
type = user;
}
2014-01-23 15:40:38.072 PodioKPITest[377:60b] oauthToken.refreshToken: d9a59577e0574d20bdbc739ccfcf61ce
2014-01-23 15:40:38.073 PodioKPITest[377:60b] oauthToken.accessToken: 53909cabac874fb78fcca7eda87a4e84
2014-01-23 15:40:38.079 PodioKPITest[377:60b] oauthToken.expiresOn: 2014-01-23 12:40:38 +0000
2014-01-23 15:40:38.080 PodioKPITest[377:60b] oauthToken.transferToken: (null)
キーチェーンからロードした後:
2014-01-23 15:41:00.509 PodioKPITest[389:60b] oauthToken: <PKOAuth2Token: 0x14d42cb0>
2014-01-23 15:41:00.512 PodioKPITest[389:60b] oauthToken.refData: (null)
2014-01-23 15:41:00.514 PodioKPITest[389:60b] oauthToken.refreshToken: (null)
2014-01-23 15:41:00.516 PodioKPITest[389:60b] oauthToken.accessToken: (null)
2014-01-23 15:41:00.521 PodioKPITest[389:60b] oauthToken.expiresOn: 2014-01-23 04:40:38 +0000
2014-01-23 15:41:00.523 PodioKPITest[389:60b] oauthToken.transferToken: (null)
なぜこれが起こっているのか誰にも分かりますか?キーチェーンよりもトークンを保存するのに適した/より正しい場所はありますか? うまくいけば、私は自分自身をうまく説明しました!