【问题标题】:Not able to handle the session properly无法正确处理会话
【发布时间】:2012-07-18 08:18:18
【问题描述】:

我使用的是 Xcode 4.3.1

我使用以下代码获取 Facebook 访问令牌。

在 Appdelegate 中:

facebook=[[Facebook alloc]initWithAppId:appid andDelegate:first];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) 
{
   facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
   facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
   accessToken=facebook.accessToken;
   date=facebook.expirationDate;
}
 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [ self.facebook handleOpenURL:url];
}

Facebook SSO(登录) 在视图控制器中:

-(IBAction)LoginClick:(id)sender {

    accesstoken=xapp.accessToken;
    date=xapp.date;
    [self fbDidExtendToken:xapp.accessToken expiresAt:xapp.date];  //For extending tokens
    NSLog(@"accesstoken:%@",accesstoken);
    if (![xapp.facebook isSessionValid]) 
    {
        [xapp.facebook authorize:permissions];
    }
    else 
    { 
        [xapp.facebook authorize: nil];

    }
}

在这里我无法正确处理会话。我的要求是第一次用户必须登录并且他应该授权应用程序。一旦他完成了应用程序不应该请求授权。Bt 现在它要求每个授权并且每次我运行应用程序时。我该如何解决这个问题.....

【问题讨论】:

    标签: iphone facebook access-token


    【解决方案1】:

    登录后是否将令牌保存到用户默认值?

     // this is a delegate method of FBSessionDelegate, called after user successfully login
    - (void)fbDidLogin 
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:[xapp.facebook accessToken] forKey:@"FBAccessTokenKey"];
        [defaults setObject:[xapp.facebook expirationDate] forKey:@"FBExpirationDateKey"];
        [defaults synchronize];
    }
    

    【讨论】:

    • 你确定 application:openURL:sourceApplication:sourceApplication annotation: 方法被调用了吗?设置一个断点来检查它是否存在。当你运行你的代码时会发生什么,你会进入 Facebook 登录屏幕吗?
    • s 我可以,甚至我可以得到用户名、性别和其他不需要访问令牌的东西.....PLz 看看我在我的问题中的最新编辑..跨度>
    • 您确定将 accessToken 和 expriationDate 保存在 fbDidLogin 中吗?尝试在 fbDidLogin 中检查这些值
    • Nw 我可以得到令牌... Bt 无法正确处理会话
    • 你有没有到达 facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; ?
    【解决方案2】:

    使用最新的 FBGraph API....查看此链接 How to share or post by mail, twitter and facebook from the current application? 以获取更多查询。这篇文章包括 FB、Twitter 和电子邮件的所有最新技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      相关资源
      最近更新 更多