【问题标题】:Open facebook dialog for authentication instead of Installed facebook app in iphone?打开 facebook 对话框进行身份验证,而不是在 iphone 中安装 facebook 应用程序?
【发布时间】:2012-06-28 12:22:04
【问题描述】:

我想制作一个应用程序,询问是否在 iphone 中安装或未安装 facebook 应用程序时在对话框中对 facebook 登录进行身份验证。如果我注销 facebook,那么它应该从 facebook 注销。我已将 facebook-ios-sdk 用于 facebook api 我的代码如下:

- (void)viewDidLoad
{
    _facebook=[[Facebook alloc] initWithAppId:appId andDelegate:self];

    self.navigationController.navigationBarHidden = YES;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"])
    {
        _facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        _facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

    [super viewDidLoad];
}

//点击登录按钮

-(IBAction)Login
{
    NSLog(@"login called");

    if (![self connected])
    {
        UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Connection" message:@"Internet is not Connected" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];[alert release];
    }
    else
    {
        if (suggestion==nil)
        {
            suggestion=[[Suggestions alloc] initWithNibName:@"Suggestions" bundle:nil];
        }
        [suggestion setReqFlg:YES];

        if (![_facebook isSessionValid]) 
        {
            NSLog(@"sesssion invalid u have to login...");
            [_facebook authorize:nil];
        }
        else
        {
            NSLog(@"valid and going on next page called graph API ");      

            [_facebook requestWithGraphPath:@"me?fields=id,name" andDelegate:self];
            suggestion.parentView=self;
            [self.navigationController pushViewController:suggestion animated:YES];
        }
    }
}



- (void)fbDidLogin
{
    NSLog(@"facebook did first login..");
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[_facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[_facebook expirationDate] forKey:@"FBExpirationDateKey"];  
    [defaults synchronize];
    NSLog(@"called gtraph from login in facebook ");
    [_facebook requestWithGraphPath:@"me?fields=id" andDelegate:self];
    if (suggestion==nil)
    {
        suggestion=[[Suggestions alloc] initWithNibName:@"Suggestions" bundle:nil];
    }
    suggestion.parentView=self;
    [self.navigationController pushViewController:suggestion animated:YES];
}

- (void)fbDidLogout
{
    NSLog(@"logout");
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults removeObjectForKey:@"FBAccessTokenKey"];
    [defaults removeObjectForKey:@"FBExpirationDateKey"];
    [defaults removeObjectForKey:@"FBUserId"];

    [defaults synchronize];
}

我是否必须在 facebook.m 文件中进行更改,或者有其他方法可以做到这一点。每次我点击登录按钮时,如果 facebook 已注销,则应显示 facebook 登录对话框;如果 facebook 已登录,则导航到下一个视图。不要打开安装在 iphone 中的 facebook 应用程序以进行登录。

给你的评论或答案我真的需要它。 谢谢你!

【问题讨论】:

  • 如果我点击登录按钮,它会转到安装在我 iphone 中的 facebook 应用程序进行身份验证。我想在 facebook 对话框中显示它。
  • 我很确定苹果不会让你从自己的应用程序登录 facebook
  • 它登录但使用 facebook 应用程序我不想使用它我想使用 facebook 对话框登录而不是 facebook 应用程序
  • 我已经用过,这样不行

标签: iphone objective-c ios


【解决方案1】:

进入 facebook.m 文件很简单,使用 FBAppAuth 搜索,你会得到 3_4 个结果,例如:-

 [self authorizeWithFBAppAuth:YES safariAuth:YES];

只需将 YES 更改为 NO,例如:-

 [self authorizeWithFBAppAuth:NO safariAuth:NO];

仅在 facebook.m 中更改它并编译并运行,当您单击 loginButton 时会出现 fblogin 对话框:)

编辑

我的应用登录页面上有登录对话框

【讨论】:

  • Nitin Gohel 先生,这是为 safari 而不是 facebook 应用程序,如果您的 iPhone 上安装了 facebook 应用程序,那么它将不会打开身份验证对话框。
  • 它适用于我尝试此代码并在我自己的工作中实现并且工作正常:--阅读完整方法 authorizewithFBAppAuth:NO OR YES
  • 请在您的 idevice 上安装 facebook 应用程序,然后在您的设备上进行检查。
  • 查看我的可编辑答案我只是上传我的屏幕截图并在 facebook.m 文件中更改每个 authorizeWithFBAppAuth=NO 不仅在一种方法中它在 facebook.m 中实现 2_3 位置
  • 不不,我也用这种方法注销:- [[objappdelegate facebook] logout];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多