Ich verwende LinkedIn
in meiner iOS App. Ich möchte das Zugriffstoken für die zukünftige Verwendung speichern.So speichern Sie LinkedIn Access Token mit iOS SDK?
Das Token ist nicht vom Eigenschaftstyp, das nicht direkt in NSUserDefaults
gespeichert werden kann. Ich versuchte NSKeyedArchiver
dafür verwendet, aber ich habe die Ausgabe:
Token===oauth_token "(null)" oauth_token_secret "(null)" oauth_verifier "(null)"
Der Text in dem Token kommt aber die Werte kommen null.
Code-Snippet 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;
}
Ich habe auch versucht, so zu speichern, aber das Ergebnis ist dasselbe:
Token===oauth_token "(null)" oauth_token_secret "(null)" oauth_verifier "(null)"
Code-Snippet 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];
Gibt es irgendetwas, wron? g mit meiner Codierung oder Access Token benötigen eine spezielle Technik zum Speichern? Bitte schlagen Sie vor.
Sie Zugriff speichern können Token direkt in Benutzer defaults.No Notwendigkeit Archivieren Sie es –
Danke für die Antwort.Wenn ich direkt zu den Standardeinstellungen speichern ich bekomme Nachricht [NSUserDefaults setObject: forKey:]: Versuch, Nicht-Eigenschaft Wert '' der Klasse 'OAToken' einzufügen. Beachten Sie, dass Wörterbücher und Arrays in Eigenschaftslisten auch nur Eigenschaftswerte enthalten müssen. –
Imran
Speichern Sie nicht OAToken Objekt direkt speichern Sie den Antworttext wie ich tat und wenn Sie Zugriffstoken verwenden möchten, initialisieren Sie es mit AntwortBody thi Sway und verwenden Sie Zugriffstoken 'self.accessToken = [[NSUserDefaults standardUserDefaults] valueForKeyPath: @ "accessToken"]; [[OAToken alloc] initWithHTTPResponseBody: self.accessToken] ' –