使用内部应用程序凭据而非用户凭据对iOS应用程序进行身份验证

时间:2012-08-02 21:47:44

标签: ios facebook authentication

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

例如,在音乐家的应用程序中,我希望能够为音乐家的艺术家页面(包括墙贴)提出Facebook请求。然后,我可以获取其页面的原始数据并为其设置样式,但是我喜欢。这不需要用户登录,并且会话身份验证将由应用程序本身使用嵌入式凭据异步完成。

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

感谢您的帮助!


更新:

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

1)应用程序使用烘焙到应用程序中的凭据加载并请求OAuth访问令牌 2)然后,App可以向Facebook请求来自预定页面馈送的馈送数据 3)这些都不需要任何用户交互或将应用程序反弹到移动游猎等等。

2 个答案:

答案 0 :(得分:1)

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

  

如果请求需要身份验证才能生成   连接,有效凭证必须已在   NSURLCredentialStorage,或必须作为所请求的一部分提供   URL。如果凭据不可用或无法进行身份验证,则   URL加载系统通过发送NSURLProtocol子类来响应   处理连接a   continueWithoutCredentialForAuthenticationChallenge:message。

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];
}

答案 1 :(得分:1)

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

您可以为app id&amp ;;申请访问令牌。秘密。这将允许您发出需要访问令牌的公共数据请求。

要求访问TOKEN: 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或弃用的 - 请告诉我。现在这似乎是解决方案!