2012-11-05 164 views
1

在过去的两天里,我一直在为此付出努力。我以前从未遇到过这个问题,但是从facebook返回的访问令牌始终为空,无论我做什么。Facebook的空访问令牌

使用的代码是从Facebook连接IOS SDK。我在其他应用程序中使用完全相同的代码,但没有问题,但由于某种原因,现在不起作用。

也没有打印错误代码。

谢谢。

回答

0

我sessionChangeState使用,此代码:

FBRequest *request = [FBRequest requestForMe]; 
[request startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *result, NSError *error) { 
    NSLog(@"access Token %@", FBSession.activeSession.accessToken); 
}]; 

,并返回我的访问令牌,试试吧!

+0

好的,谢谢你会尝试 – user281300

+0

仍收到作为标记为空。 – user281300

0

试试这段代码。您将通过self.facebook.accessToken获取访问令牌。 在视图中调用facebookbtnclicked方法负载或任何地方获取访问令牌。

facebook = [[Facebook alloc] initWithAppId:@"227757844008650"]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) 
    { 

     facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 

    } 
-(void)facebookbtnclicked 
{ 
    NSLog(@"facebook btn clicked"); 
    [self loginToFacebook:self]; 
} 

- (BOOL) isFaceBookLoggedIn 
{ 
    if (self.facebook.accessToken) 
    { 
     return YES; 

    } 
    else { 
     return NO; 
    } 
} 

- (void) logoutFromFacebook: (id) logoutDelegate 
{ 
    fbServiceRequestingobj = logoutDelegate; 
    [facebook logout:self]; 
} 

- (void)loginToFacebook:(id) loginDelegate 
{ 
    NSLog(@"login facebook method"); 

    fbServiceRequestingobj = loginDelegate; 

    NSArray* permissions = [[NSArray alloc] initWithObjects: 
          @"publish_stream", nil]; 
    [facebook authorize:permissions delegate:self]; 

} 
-(void) getuserdata 
{ 

    NSLog(@"[appDelegate getuserdata]"); 

    if (fbServiceRequestingobj) 
    { 
     fbServiceRequestingobj = nil; 
    } 

    [facebook requestWithGraphPath:@"me" andDelegate:self]; 


    [facebook requestWithGraphPath:@"me/friends" andDelegate:self]; 

} 
- (void)fbDidLogout 
{ 
    NSLog(@"Did Logout"); 

    if (fbServiceRequestingobj) 
    { 
     if ([fbServiceRequestingobj respondsToSelector:@selector(fbDidLogout)]) 
     { 
      [fbServiceRequestingobj performSelector:@selector(fbDidLogout)]; 
     } 
    } 
    fbServiceRequestingobj = nil; 
} 


- (void)request:(FBRequest *)request didFailWithError:(NSError *)error 
{ 

    if (fbServiceRequestingobj) 
    { 
     if ([fbServiceRequestingobj respondsToSelector:@selector(request:didFailWithError:)]) 
     { 
      [fbServiceRequestingobj request:request didFailWithError:error]; 
     } 
    } 
    fbServiceRequestingobj = nil; 
} 

-(void)fbDidNotLogin:(BOOL)cancelled 
{ 

    if (fbServiceRequestingobj) 
    { 
     if ([fbServiceRequestingobj respondsToSelector:@selector(fbDidNotLogin:)]) 
     { 
      //[fbServiceRequestingobj fbDidNotLogin:cancelled]; 
     } 
    } 
    fbServiceRequestingobj = nil; 
} 


- (void)fbDidLogin 
{ 

    NSLog(@"fbDidLogin"); 
    //[facebook requestWithGraphPath:@"me/friends" andDelegate:self]; 
    NSLog(@"accesstoken########%@",self.facebook.accessToken); 
} 


- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    count++; 
    NSError *error = [request error]; 

    if (!error) 
    { 
     NSString *response = [request responseString]; 

     NSDictionary *respdic=[response JSONValue]; 
     if(![[respdic valueForKey:@"id"] isEqualToString:@""]) 
     { 


      UIAlertView *alert1=[[UIAlertView alloc] initWithTitle:@"" message:@"Photo posted successfully." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [alert1 show]; 
     } 
    } 
} 

- (void)request:(FBRequest *)request didLoad:(id)result 
{ 


    if ([result isKindOfClass:[NSArray class]]) 
    { 
     result = [result objectAtIndex:0]; 
    } 

    if ([result isKindOfClass:[NSDictionary class]]) 
    { 

     } 


    } 
    if ([result isKindOfClass:[NSData class]]) 
    { 

     UIImage *profilePicture = [[UIImage alloc] initWithData: result]; 

    } 


    if (fbServiceRequestingobj) 
    { 
     if ([fbServiceRequestingobj respondsToSelector:@selector(request:didLoad:)]) 
     { 
      [fbServiceRequestingobj request:request didLoad:result]; 
     } 
    } 

    fbServiceRequestingobj = nil; 

}; 
+0

干杯我通过重写所有内容并使用最新的Facebook sdk解决了它。仍然不确定是什么导致了这个问题。 – user281300