我正在使用新的 FBSDK。能够使用 FBSDK 获取访问令牌
[[FBSDKAccessToken currentAccessToken]tokenString]
如何在不提示用户再次登录的情况下使用它来分享或发布?
场景:用户通过 Facebook 登录,生成访问令牌,我们将此访问令牌存储在默认值中。用户为此会话分享了一些东西。对于未来的会话,当用户想要共享某些内容时,我们使用存储在默认值中的访问令牌进行发布。
如果我没有获得访问令牌的功能,请纠正我......
我正在使用新的 FBSDK。能够使用 FBSDK 获取访问令牌
[[FBSDKAccessToken currentAccessToken]tokenString]
如何在不提示用户再次登录的情况下使用它来分享或发布?
场景:用户通过 Facebook 登录,生成访问令牌,我们将此访问令牌存储在默认值中。用户为此会话分享了一些东西。对于未来的会话,当用户想要共享某些内容时,我们使用存储在默认值中的访问令牌进行发布。
如果我没有获得访问令牌的功能,请纠正我......
检查这样的权限...不要存储访问令牌...以下代码使用您不需要每次登录...
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)
}];
}
您可以使用此方法:
- (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
performSystemLogIn从beginSystemLogInin调用FBSDKLoginManager。
beginSystemLogIn从logInWithBehavior in调用FBSDKLoginManager。
logInWithBehavior从以下地方调用:
logInWithPermissions 在FBSDKLoginManagerfallbackToNativeBehavior在FBSDKLoginManagerattemptBrowserLogIn在FBSDKLoginCompletioncompleteLogIn 在FBSDKLoginCompletion