1

我是否可以在没有用户交互的情况下对 iOS 应用程序进行身份验证,使其可以向 Facebook 请求页面数据?

例如,在一个音乐家的应用程序中,我希望能够向 Facebook 请求音乐家的艺术家页面,包括墙上的帖子。然后,我可以获取他们页面的原始数据并随意设置样式。这不需要用户登录,并且会话身份验证将由应用程序本身使用嵌入式凭据异步完成。

我想使用 SDK,但我认为这需要手动 OAuth 访问令牌请求和帖子。

谢谢您的帮助!


更新:

为了澄清,我很好奇以下可能性:

1) 应用程序使用嵌入应用程序的凭据加载并请求 OAuth 访问令牌 2) 然后应用程序可以向 facebook 请求来自预定页面提要的提要数据 3) 这些都不需要任何用户交互或将应用程序退回移动游猎等

4

2 回答 2

1

我真的不明白你想要什么,但可以在没有用户交互的情况下进行身份验证:

如果请求需要身份验证才能建立连接,则有效凭据必须已经在 NSURLCredentialStorage 中可用,或者必须作为请求 URL 的一部分提供。如果凭据不可用或无法通过身份验证,则 URL 加载系统通过向处理连接的 NSURLProtocol 子类发送 continueWithoutCredentialForAuthenticationChallenge: 消息来响应。

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/AuthenticationChallenges.html#//apple_ref/doc/uid/TP40009507-SW1

有一种认证方式:

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
   return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
     if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
         [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
     [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}
于 2012-08-02T22:09:27.483 回答
1

好的 - 我想通了。感觉很傻,我不知道你能做到这一点。

您可以为应用 ID 和机密请求访问令牌。这将允许您发出需要访问令牌的公共数据请求。

请求访问令牌: https ://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=11111111&client_secret=9999999999

然后,只需在您的 Feed 请求中使用返回的访问令牌:

https://graph.facebook.com/musicpage/feed?access_token=ACCESS_TOKEN

如果这违反 TOS 或已弃用 - 请告诉我。现在这似乎是解决方案!

于 2012-08-02T22:44:47.160 回答