Ios 我正在尝试使用Facebook登录,登录成功但未返回应用程序
在此之后,我无法返回应用程序(如下图所示),也无法检索任何用户的数据 我已经搜索过了,但没有找到任何合适的答案 日志图片: 最终如下图所示,不要返回应用程序,并且没有用户数据:Ios 我正在尝试使用Facebook登录,登录成功但未返回应用程序,ios,objective-c,xcode,facebook,Ios,Objective C,Xcode,Facebook,在此之后,我无法返回应用程序(如下图所示),也无法检索任何用户的数据 我已经搜索过了,但没有找到任何合适的答案 日志图片: 最终如下图所示,不要返回应用程序,并且没有用户数据: 集成facebook API并阅读文档 这是一个示例代码 if ([FBSDKProfile currentProfile]) //checking the login status { NSLog(@"User name: %@",[FBSDKProfile currentProfile].name);
集成facebook API并阅读文档 这是一个示例代码
if ([FBSDKProfile currentProfile]) //checking the login status
{
NSLog(@"User name: %@",[FBSDKProfile currentProfile].name);
NSLog(@"User ID: %@",[FBSDKProfile currentProfile].userID);
}
第1步。下载最新的Facebook SDK(包括主要更改)。
第二步。将FBSDKCoreKit.framework和FBSDKLoginKit.framework添加到
你的项目。
第三步。现在转到项目>构建阶段>添加
Safarices.framework
第四步。我们需要验证info.plist中有三个更改。
4.1确保您的info.plist文件中包含以下内容
CbundleurlTypes
循环流化床锅炉方案
FacebookAppID
FacebookDisplayName
4.2现在添加以下白名单Facebook服务器,这是iOS 9必须的
NSAppTransportSecurity
NSExceptionDomains
facebook.com
n包括多个域
NSExceptionRequiresForwardSecretary
fbcdn.net
n包括多个域
NSExceptionRequiresForwardSecretary
akamaihd.net
n包括多个域
NSExceptionRequiresForwardSecretary
4.3添加URL方案
LSApplicationQueriesSchemes
fbapi
fb messenger api
fbauth2
fbshareextension
第五步。现在打开AppDelegate.m文件
5.1添加以下进口声明
#进口
#进口
5.2更新以下方法
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
注释:(id)注释{
return[[FBSDKApplicationDelegate sharedInstance]应用程序:应用程序
openURL:url
sourceApplication:sourceApplication
注释:注释];
}
-(无效)应用IDBECOMEACTIVE:(UIApplication*)应用{
[FBSDKAppEvents activateApp];
}
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
return[[FBSDKApplicationDelegate sharedInstance]应用程序:应用程序
didFinishLaunchingWithOptions:launchOptions];
}
第六步。现在我们需要修改我们的登录控制器,在这里我们可以完成登录任务
6.1在Login ViewController.m中添加这些导入
#进口
#进口
6.2添加Facebook登录按钮
FBSDKLoginButton*loginButton=[[FBSDKLoginButton alloc]init];
loginButton.center=self.view.center;
[self.view addSubview:loginButton];
6.3处理登录按钮点击
-(iAction)facebookLogin:(id)发件人
{
FBSDKLoginManager*login=[[FBSDKLoginManager alloc]init];
if([FBSDKAccessToken currentAccessToken])
{
NSLog(@“令牌可用:%@,[[FBSDKAccessToken currentAccessToken]令牌字符串]);
[自取用户信息];
}
其他的
{
[login LoginWith ReadPermissions:@[@“email”]fromViewController:self handler:^(FBSDKLoginManagerLoginResult*结果,NSError*错误)
{
如果(错误)
{
NSLog(@“登录过程错误”);
}
否则如果(结果被取消)
{
NSLog(@“用户已取消登录”);
}
其他的
{
NSLog(@“登录成功”);
如果([result.grantedPermissions containsObject:@“email”])
{
NSLog(@“结果为:%@”,结果);
[自取用户信息];
}
其他的
{
[SVProgressHUD淋浴状态:@“Facebook电子邮件权限错误”];
}
}
}];
}
}
6.4获取用户信息(姓名、电子邮件等)
-(void)fetchUserInfo
{
if([FBSDKAccessToken currentAccessToken])
{
NSLog(@“令牌可用:%@,[[FBSDKAccessToken currentAccessToken]令牌字符串]);
[[[FBSDKGraphRequest alloc]initWithGraphPath:@“me”参数:@{@“fields”:@“id,name,email”}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection*连接,id结果,NSError*错误){
如果(!错误)
{
NSLog(@“结果:%@”,结果);
NSString*email=[result objectForKey:@“email”];
NSString*userId=[result objectForKey:@“id”];
如果(email.length>0)
{
//开始你的应用程序待办事项
}
其他的
{
NSLog(@“未验证Facebook电子邮件”);
}
}
其他的
{
NSLog(@“错误%@”,错误);
}
}];
}
}
错误不是由facebook集成引起的。
在viewDidLoad中显示视图可能有问题。请将其更改为ViewDidDisplay。请参阅duplicate@()你能展示一些你尝试过的代码吗?你是否添加了所有的plist内容、Appdelegate中的openUrl代码等。是的,我已经在plist@Mr中添加了所有必需的内容。UB@Sanjeetverma我已更新了我的问题。请确认
.plist中的授权密钥有问题。。
Step-1. Download latest Facebook SDK (it includes major changes).
Step-2. Add FBSDKCoreKit.framework and FBSDKLoginKit.framework to
your project.
Step-3. Now go to Project > Build Phases > add
SafariServices.framework
Step-4. There are three changes in info.plist we need to verify.
4.1 Make sure you have below in your info.plist file
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string><your fb id here eg. fbxxxxxx></string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string><your FacebookAppID></string>
<key>FacebookDisplayName</key>
<string><Your_App_Name_Here></string>
4.2 Now add below for White-list Facebook Servers, this is must for iOS 9
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
4.3 Add URL schemes
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Step-5. Now open AppDelegate.m file
5.1 Add below import statements
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
5.2 update following following methods
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[FBSDKAppEvents activateApp];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return [[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
}
Step-6. Now we need to modify our Login Controller, where we do Login task
6.1 Add these imports in Login ViewController.m
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
6.2 Add Facebook Login Button
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.center = self.view.center;
[self.view addSubview:loginButton];
6.3 Handle Login button click
-(IBAction)facebookLogin:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
if ([FBSDKAccessToken currentAccessToken])
{
NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
[self fetchUserInfo];
}
else
{
[login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error)
{
NSLog(@"Login process error");
}
else if (result.isCancelled)
{
NSLog(@"User cancelled login");
}
else
{
NSLog(@"Login Success");
if ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"result is:%@",result);
[self fetchUserInfo];
}
else
{
[SVProgressHUD showErrorWithStatus:@"Facebook email permission error"];
}
}
}];
}
}
6.4 Get user info (name, email etc.)
-(void)fetchUserInfo
{
if ([FBSDKAccessToken currentAccessToken])
{
NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, email"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
{
NSLog(@"results:%@",result);
NSString *email = [result objectForKey:@"email"];
NSString *userId = [result objectForKey:@"id"];
if (email.length >0 )
{
//Start you app Todo
}
else
{
NSLog(@“Facebook email is not verified");
}
}
else
{
NSLog(@"Error %@",error);
}
}];
}
}