Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将我的访问令牌从google站点注入我的iOS应用程序?_Ios_Objective C_Oauth 2.0 - Fatal编程技术网

是否可以将我的访问令牌从google站点注入我的iOS应用程序?

是否可以将我的访问令牌从google站点注入我的iOS应用程序?,ios,objective-c,oauth-2.0,Ios,Objective C,Oauth 2.0,我有一个用objc编写的应用程序,当你打开它时,你会看到一个带有谷歌登录按钮的视图控制器,当你登录时,你可以访问该页面。是否有任何方法(因为现在我在拥有access_令牌之前已经登录)注入access_令牌,以便在启动应用程序时它知道我已登录?我知道我为什么要这样做是没有道理的,但目前这是必要的。任何帮助都将不胜感激 将访问令牌保存为用户默认值,并保存到期日期 启动时,请检查过期日期。如果该日期尚未过去,请使用访问令牌保持登录状态 如果需要确保访问令牌的安全,请将其保存到密钥链,而不是用户默认值

我有一个用objc编写的应用程序,当你打开它时,你会看到一个带有谷歌登录按钮的视图控制器,当你登录时,你可以访问该页面。是否有任何方法(因为现在我在拥有access_令牌之前已经登录)注入access_令牌,以便在启动应用程序时它知道我已登录?我知道我为什么要这样做是没有道理的,但目前这是必要的。任何帮助都将不胜感激

将访问令牌保存为用户默认值,并保存到期日期

启动时,请检查过期日期。如果该日期尚未过去,请使用访问令牌保持登录状态


如果需要确保访问令牌的安全,请将其保存到密钥链,而不是用户默认值。

将访问令牌保存到用户默认值,并保存过期日期

启动时,请检查过期日期。如果该日期尚未过去,请使用访问令牌保持登录状态


如果您需要确保访问令牌的安全,请将其保存到密钥链,而不是用户默认值。

基于Duncan C的答案,如果您的令牌是一个字符串,那么类似这样的内容应该可以满足您的需要:

NSString *token = @"xxxxx";
NSDate *sampleExpiration = [NSDate dateWithTimeIntervalSinceNow:10000];//expires in 10000 seconds from now

//save the token and expiration to NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"loginToken"];
[[NSUserDefaults standardUserDefaults] setObject:sampleExpiration forKey:@"tokenExpiration"];

//retrieve the expiration, check it and then grab the token
NSDate *tokenExpiration = [[NSUserDefaults standardUserDefaults] objectForKey:@"tokenExpiration"];
if ([[NSDate date] timeIntervalSinceDate:tokenExpiration] < 0) {
    NSLog(@"token valid");

    //retrieve the token and use for login
    NSString *retrievedToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"loginToken"];
    NSLog(@"token is: %@", retrievedToken);
}
else {
    //prompt user to login again and repeat the process
}
NSString*token=@“xxxxx”;
NSDate*sampleExpiration=[NSDate DATE WITHTIMEINTERVALICENCENOW:10000]//从现在起10000秒后过期
//将令牌和到期时间保存到NSUserDefaults
[[NSUserDefaults standardUserDefaults]setObject:token forKey:@“loginToken”];
[[NSUserDefaults standardUserDefaults]setObject:sampleExpiration-forKey:@“tokenExpiration”];
//检索过期,检查它,然后获取令牌
NSDate*tokenExpiration=[[NSUserDefaults standardUserDefaults]objectForKey:@“tokenExpiration”];
如果([[NSDate date]timeIntervalSinceDate:tokenExpiration]<0){
NSLog(@“令牌有效”);
//检索令牌并用于登录
NSString*retrievedToken=[[NSUserDefaults standardUserDefaults]objectForKey:@“loginToken”];
NSLog(@“令牌为%@”,retrievedToken);
}
否则{
//提示用户再次登录并重复此过程
}

基于Duncan C的答案,如果您的令牌是一个字符串,那么类似这样的东西应该可以满足您的需要:

NSString *token = @"xxxxx";
NSDate *sampleExpiration = [NSDate dateWithTimeIntervalSinceNow:10000];//expires in 10000 seconds from now

//save the token and expiration to NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"loginToken"];
[[NSUserDefaults standardUserDefaults] setObject:sampleExpiration forKey:@"tokenExpiration"];

//retrieve the expiration, check it and then grab the token
NSDate *tokenExpiration = [[NSUserDefaults standardUserDefaults] objectForKey:@"tokenExpiration"];
if ([[NSDate date] timeIntervalSinceDate:tokenExpiration] < 0) {
    NSLog(@"token valid");

    //retrieve the token and use for login
    NSString *retrievedToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"loginToken"];
    NSLog(@"token is: %@", retrievedToken);
}
else {
    //prompt user to login again and repeat the process
}
NSString*token=@“xxxxx”;
NSDate*sampleExpiration=[NSDate DATE WITHTIMEINTERVALICENCENOW:10000]//从现在起10000秒后过期
//将令牌和到期时间保存到NSUserDefaults
[[NSUserDefaults standardUserDefaults]setObject:token forKey:@“loginToken”];
[[NSUserDefaults standardUserDefaults]setObject:sampleExpiration-forKey:@“tokenExpiration”];
//检索过期,检查它,然后获取令牌
NSDate*tokenExpiration=[[NSUserDefaults standardUserDefaults]objectForKey:@“tokenExpiration”];
如果([[NSDate date]timeIntervalSinceDate:tokenExpiration]<0){
NSLog(@“令牌有效”);
//检索令牌并用于登录
NSString*retrievedToken=[[NSUserDefaults standardUserDefaults]objectForKey:@“loginToken”];
NSLog(@“令牌为%@”,retrievedToken);
}
否则{
//提示用户再次登录并重复此过程
}


访问令牌在cookie中吗?@ABuckau感谢您的回复!我不这么认为。@ABuckau您知道如何将nsuserdefault中的访问令牌传递给uiwebview吗?访问令牌在cookie中吗?@ABuckau谢谢您的回复!我不这么认为。@ABuckau您知道如何将nsuserdefault中的访问令牌传递给uiwebview吗?谢谢您的回答!我得试试这个!你不会碰巧有这四个步骤的例子吧?将访问令牌添加到用户默认值、保存到期、在viewDidLoad中检查到期并授予访问权限?或者给我指出正确的方向,如何做这些事情?我真的很感谢你的时间!您知道如何将nsuserdefault中的访问令牌传递给uiwebview吗?这取决于网页的设置方式。它是否支持可选的查询字符串,允许您将访问令牌作为URL的一部分传递?这是一种非常常见的方法,但这取决于网站。如果你不介意看一看,看看你是否能帮我解决这个问题,这里有一个指向我的新问题的链接。谢谢你抽出时间!谢谢你的回答!我得试试这个!你不会碰巧有这四个步骤的例子吧?将访问令牌添加到用户默认值、保存到期、在viewDidLoad中检查到期并授予访问权限?或者给我指出正确的方向,如何做这些事情?我真的很感谢你的时间!您知道如何将nsuserdefault中的访问令牌传递给uiwebview吗?这取决于网页的设置方式。它是否支持可选的查询字符串,允许您将访问令牌作为URL的一部分传递?这是一种非常常见的方法,但这取决于网站。如果你不介意看一看,看看你是否能帮我解决这个问题,这里有一个指向我的新问题的链接。谢谢你抽出时间!如果你不介意看一下我的新问题,看看你能不能帮我解决这个问题,这里有一个链接。谢谢你抽出时间!我将在几小时后到家,到时候我会很乐意去看看。如果你不介意看一看,看看你是否能帮我解决这个问题,这里有一个指向我新问题的链接。谢谢你抽出时间!我将在几个小时后回家,到时候我会很乐意去看看。