0

我正在使用新的 FBSDK。能够使用 FBSDK 获取访问令牌

[[FBSDKAccessToken currentAccessToken]tokenString]

如何在不提示用户再次登录的情况下使用它来分享或发布?

场景:用户通过 Facebook 登录,生成访问令牌,我们将此访问令牌存储在默认值中。用户为此会话分享了一些东西。对于未来的会话,当用户想要共享某些内容时,我们使用存储在默认值中的访问令牌进行发布。

如果我没有获得访问令牌的功能,请纠正我......

4

2 回答 2

1

检查这样的权限...不要存储访问令牌...以下代码使用您不需要每次登录...

  if ([[FBSDKAccessToken currentAccessToken]hasGranted:@"email"])
   {
      // add your coding here after login call this block
   }
   else
   {

//login code

    FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

    [loginManager logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)




  }];

   }
于 2015-10-19T13:43:46.523 回答
1

您可以使用此方法:

- (void)continueSystemLogInWithTokenString:(NSString *)oauthToken error:(NSError *)accountStoreError state:(FBSDKLoginManagerSystemAccountState *)state;

oauthToken你的accessToken字符串在哪里

获得应用令牌后,您可以执行以下操作:

if (oauthToken) {
    completer = [[FBSDKLoginSystemAccountCompleter alloc] initWithTokenString:oauthToken appID:[FBSDKSettings appID]];
    }

注意:所有这些方法都在 FBSDKLoginCompletion 类中定义。

调用层次结构:

这种方法:

initWithTokenString in被FBSDKLoginCompletion.m调用continueSystemLogInWithTokenStringFBSDKLoginManager.m

并在方法 incontinueSystemLogInWithTokenString中调用。performSystemLogInFBSDKLoginManager

performSystemLogInbeginSystemLogInin调用FBSDKLoginManager

beginSystemLogInlogInWithBehavior in调用FBSDKLoginManager

logInWithBehavior从以下地方调用:

  • logInWithPermissionsFBSDKLoginManager
  • fallbackToNativeBehaviorFBSDKLoginManager
  • attemptBrowserLogInFBSDKLoginCompletion
  • completeLogInFBSDKLoginCompletion
于 2015-10-19T13:37:51.703 回答