Używam LinkedIn
w mojej aplikacji na iOS. Chcę zapisać token dostępu do przyszłego użytku.Jak zapisać token dostępu LinkedIn za pomocą zestawu SDK iOS?
Token jest typu innego niż nieruchomości, którego nie można zapisać bezpośrednio pod numerem NSUserDefaults
. Próbowałem za pomocą NSKeyedArchiver
do tego, ale mam wyjścia:
Token===oauth_token "(null)" oauth_token_secret "(null)" oauth_verifier "(null)"
Tekst tokena nadchodzi ale wartości idą zerowa.
Fragment kodu 1:
-(void)saveData :(LOAToken *)token
{
NSFileManager *filemgr;
NSString *docsDir;
NSArray *dirPaths;
filemgr = [NSFileManager defaultManager];
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
// Build the path to the data file
NSString *dataFilePath = [[NSString alloc] initWithString: [docsDir
stringByAppendingPathComponent: @"data.archive"]];
[NSKeyedArchiver archiveRootObject:
token toFile:dataFilePath];
}
-(LOAToken *)GetToken
{
NSFileManager *filemgr;
NSString *docsDir;
NSArray *dirPaths;
filemgr = [NSFileManager defaultManager];
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
// Build the path to the data file
NSString *dataFilePath = [[NSString alloc] initWithString: [docsDir
stringByAppendingPathComponent: @"data.archive"]];
// Check if the file already exists
if ([filemgr fileExistsAtPath: dataFilePath])
{
LOAToken *token;
token = [NSKeyedUnarchiver
unarchiveObjectWithFile: dataFilePath];
return token;
}
return NULL;
}
Próbowałem też zapisać w ten sposób, ale wynik jest taki sam:
Token===oauth_token "(null)" oauth_token_secret "(null)" oauth_verifier "(null)"
Fragment kodu 2:
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:self.accessToken];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"];
[defaults synchronize];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [defaults objectForKey:@"myEncodedObjectKey"];
LOAToken *obj = (LOAToken *)[NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];
Czy jest coś wron? g z moim kodowaniem lub tokenem dostępu potrzebujesz specjalnej techniki do zapisania? Proszę zasugerować.
Można zapisać token dostępu bezpośrednio do użytkownika defaults.No potrzebie zarchiwizuj go –
Dziękuję za odpowiedź. Gdy zapisuję ustawienia domyślne, otrzymuję komunikat [NSUserDefaults setObject: forKey:]: Próba wstawienia wartości niestateczności "" klasy "OAToken". Zauważ, że słowniki i tablice na listach właściwości muszą również zawierać tylko wartości właściwości. –
Imran
nie zapisuj obiektu OAToken bezpośrednio zapisz treść odpowiedzi tak jak ja i kiedy chcesz użyć tokena dostępu, zainicjuj go za pomocą reponseBody thi sway i użyj tokena dostępu 'self.accessToken = [[NSUserDefaults standardUserDefaults] valueForKeyPath: @ "accessToken"]; [[OAToken alloc] initWithHTTPResponseBody: self.accessToken] ' –