ios - 如何从 iOS 应用程序中的 Safari url 获取响应数据?

标签 ios objective-c iphone url safari

我想在 Safari 中登录 Instagram,并希望在 ios 应用程序中得到响应。

我已从 iPhone 应用程序重定向到 Safari 以登录 Instagram。 现在我想在 iPhone 应用程序中获取 Safari 的 Instagram 登录响应数据。

我对此一无所知。这可能吗?我们可以在 iOS 应用程序中获得 Safari URL 的响应吗?

最佳答案

为此,您必须使用 UIWebView 及其委托(delegate)方法。

代码来自 Instagram-Auth-iOS

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *responseURL = [request.URL absoluteString];

    NSString *urlCallbackPrefix = [NSString stringWithFormat:@"%@/?code=", INSTAGRAM_CALLBACK_BASE];

    //We received the code, now request the auth token from Instagram.
    if([responseURL hasPrefix:urlCallbackPrefix])
    {
        NSString *authToken = [responseURL substringFromIndex:[urlCallbackPrefix length]];

        NSURL *url = [NSURL URLWithString:@"https://api.instagram.com/oauth/access_token"];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

        NSDictionary *paramDict = [NSDictionary dictionaryWithObjectsAndKeys:authToken, @"code", INSTAGRAM_CALLBACK_BASE, @"redirect_uri", @"authorization_code", @"grant_type",  INSTAGRAM_CLIENT_ID, @"client_id",  INSTAGRAM_CLIENT_SECRET, @"client_secret", nil];

        NSString *paramString = [paramDict urlEncodedString];

        NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

        [request setHTTPMethod:@"POST"];
        [request addValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@",charset] forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:[paramString dataUsingEncoding:NSUTF8StringEncoding]];

        self.tokenRequestConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

        [self.tokenRequestConnection start];

        return NO;
    }

    return YES;
}

Github 上的这个 repo Instagram-Auth-iOS会帮助你

关于ios - 如何从 iOS 应用程序中的 Safari url 获取响应数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014400/

相关文章:

iOS 核心位置 - 获取最准确的位置坐标

iOS >> 使用 UIWebView 嵌入 YouTube 视频 - 视频不播放

iphone - UITextField 不会在整个项目中自动大写

ios - 如何准备 UISplitViewController 辅助 VC 以更改 displayMode?

objective-c - UIBarButtonItem 如何知道 UIToolBar 使用哪种 UIBarStyle?

ios - 完成 block 方法与DispatchQueue

ios - 记住 tableView 中选定的单元格

iphone - 使 UINavigationBar 半透明

iphone - 文件所有者+第一响应者

iphone - 表格 View 单元格中的 ImageView 框架