如何使用来自iOS应用程序的REST API对Microsoft SharePoint站点进行身份验证

时间:2011-09-06 11:21:18

标签: iphone ios sharepoint sharepoint-api

我开始知道我们可以使用REST apis从SharePoint站点获取数据。此外,SharePoint从2010年开始支持REST。我获得了用于列出SharePoint数据及其详细信息的API。它是“ListData.svc”。是否有任何其他类似于我们可以验证我们的网站的API。我尝试了浏览器(listdata.svc),在此之前我已登录。如果我已注销并执行“siteUrl / _vti_bin / ListData.svc”,我无法获得结果,请求超时或有时它显示网页不可用。如果有人知道如何在iPhone应用程序中使用SharePoint,请分享相同内容。

3 个答案:

答案 0 :(得分:2)

阅读本文:http://sharepointsemantics.com/2011/07/the-client-side-object-model-help-with-headless-authentication-in-sharepoint-online/请务必阅读Chris Johnson撰写的链接文章,并提供解决您的身份验证问题的信息。

Sidenote,您几乎必须在SharePoint端使用表单身份验证。

答案 1 :(得分:2)

以下是我通过http对SharePoint 2010进行NTLM身份验证的方法。它可以在任何对listdata.svc的调用中返回JSON字典(例如调用URL yourdomain / _vti_bin / listdata.svc / YourList):

抓取AFNetworking并按照说明将其导入XCode应用程序。

当您在项目中进行AFNetworking编译时,您需要创建AFHTTPClient类的AFNetworking框架。例如。在iOS XCode项目中添加一个新类,并选择AFHTTPClient作为它的对象类型。

一旦你有了子类,就会得到如下内容:

YourHTTPClient.h

#import "AFHTTPClient.h"
#import "AFJSONRequestOperation.h"
#import "AFNetworkActivityIndicatorManager.h"

typedef void(^OLClientSuccess) (AFJSONRequestOperation *operation, id responseObject);
typedef void(^OLClientFailure) (AFJSONRequestOperation *operation, NSError *error);

@interface OLHTTPClient : AFHTTPClient
{

NSString *strBASEURL;
NSString *strUser;
NSString *strPassword;

}

@property (nonatomic, retain) NSString *strUser;
@property (nonatomic, retain) NSString *strPassword;
@property (nonatomic, retain) NSString *strBASEURL;

+(id) sharedClient;

- (void)setUsername:(NSString *)username andPassword:(NSString *)password;

-(void) getStuff:(OLClientSuccess) success failure:(OLClientFailure) failure;

@end

在YourHTTPClient.m文件中,您可以使用下面的代码,但在此.m文件中,您将实现自定义方法调用以从SharePoint获取列表数据。见下文:

来自YourHTTPClient.m的验证代码片段:

- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters
    success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
    failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
[operation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) {
    NSURLCredential *newCredential = [NSURLCredential credentialWithUser:self.User password:self.password persistence:NSURLCredentialPersistenceForSession];
    [challenge.sender useCredential:newCredential forAuthenticationChallenge:challenge];
}];
[self enqueueHTTPRequestOperation:operation];
}

@end

我只是在配置了使用NTLM进行身份验证的SharePoint 2010环境中尝试了上述操作。如果您需要使用Kerberos进行身份验证,可能需要重新配置,但我怀疑它也可以使用AFNetworking。

答案 2 :(得分:0)

看看这个项目,它支持SharePoint 2013 RestAPI.Its为我工作,并且非常肯定它也适合你。

https://github.com/jimmywim/SPRestAPI

默认情况下,SPRESTQuery在XMl中提供响应。如果要在json中进行响应,则必须在executeQuery方法中编写此行。

[apiRequest setValue:@"application/json;odata=verbose" forHTTPHeaderField:@"Accept"];