首页 文章

在fitbit授权期间,当url /打开时,iOS应用程序崩溃

提问于
浏览
0

我正在尝试在我的iOS应用程序中实现fitbit授权 . 具体来说,我试图按照get authorization from Fitbit using Oauth in iOS中的步骤进行操作 . 目前,我已经按照第1点和我的应用程序重定向到safari登录到fitbit帐户,然后转换回我的应用程序,它立即崩溃 .

我已经设置了一个URL方案作为我的应用程序的名称,我的回调URL /重定向URI都设置为myAppName:// . 我还在我的AppDelegate中实现了一个永远不会被调用的func应用程序(_ app:UIApplication,open url:URL,options:[UIApplicationOpenURLOptionsKey:Any] = [:]) - > Bool {}方法 .

有什么可能导致这个问题的想法?

更一般地说:为什么应用程序在通过URL打开时会崩溃 .

1 回答

  • 0

    当您在用户输入凭证时调用Fitbit身份验证时,fitbit会调用您的回调网址 . 所以你需要像这样在你的app委托中处理这个回调 .

    - (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    
      NSString *strUrl =[NSString stringWithFormat:@"%@",url];
      if ([strUrl containsString:@"#_=_"]) {
        [self saveFitbitCode:url];
        return YES;
      }
    }
    

    现在在saveFitbitCode方法中,我正在检索auth_code然后发送本地通知,因此它将调用另一个访问令牌功能 .

    -(void)saveFitbitCode:(NSURL *)url
    {
        NSString *strUrl =[NSString stringWithFormat:@"%@",url];
        NSRange range1 = [strUrl rangeOfString:@"code="];
        NSRange range2 = [strUrl rangeOfString:@"#_=_"];
    
    
        NSRange rSub = NSMakeRange(range1.location + range1.length, range2.location - range1.location - range1.length);
        NSString *sub = [strUrl substringWithRange:rSub];
    
       [[NSUserDefaults standardUserDefaults] setObject:sub forKey:@"auth_code"];
       [[NSUserDefaults standardUserDefaults] synchronize];
       [[NSNotificationCenter defaultCenter] postNotificationName:@"callRequest" object:nil userInfo:nil];
    }
    

    我希望这能帮到您 .

相关问题