Как проверить подлинность сайта Microsoft SharePoint с помощью REST API из приложения iOS - PullRequest
3 голосов
/ 06 сентября 2011

Я узнал, что мы можем использовать REST apis для получения данных с сайтов SharePoint. Также SharePoint поддерживает REST с 2010 года. Я получил API для перечисления данных и их деталей из SharePoint. Это "ListData.svc". Существуют ли другие API-интерфейсы, аналогичные тем, с помощью которых мы могли бы аутентифицировать наш сайт. Я попробовал браузер (listdata.svc), и до этого я вошел в систему. Если я вышел из системы и выполнил «siteUrl / _vti_bin / ListData.svc», я не смог получить результат, время ожидания запроса истекло или иногда показывает, что веб-страница недоступна. Если кто-нибудь знает, как использовать SharePoint в приложениях для iPhone, поделитесь чем-нибудь в этом же духе.

Ответы [ 3 ]

2 голосов
/ 10 апреля 2013

Вот как я это сделал для аутентификации NTLM в SharePoint 2010 через http.Он работает и возвращает словарь JSON из любого вызова listdata.svc (например, вызов URL yourdomain / _vti_bin / listdata.svc / YourList):

Grab AFNetworking и следуйте инструкциям, чтобы получитьэто в ваше приложение XCode.

Когда у вас есть компиляция AFNetworking в вашем проекте, вам нужно создать подкласс AFHTTPClient класса инфраструктуры AFNetworking.Например, добавьте новый класс в ваш проект XCode для iOS и выберите 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

Я пробовал описанное выше только в среде SharePoint 2010, настроенной для проверки подлинности с использованием NTLM.Может потребоваться перенастройка, если вам нужно пройти аутентификацию с использованием Kerberos, но я подозреваю, что это возможно и с использованием AFNetworking.

2 голосов
/ 06 сентября 2011

Прочитайте это: http://sharepointsemantics.com/2011/07/the-client-side-object-model-help-with-headless-authentication-in-sharepoint-online/ Убедитесь, что вы прочитали связанные статьи, написанные Крисом Джонсоном, следуя информации, которая должна решить ваши проблемы с аутентификацией.

Sidenote, вы в значительной степени ДОЛЖНЫ использовать аутентификацию с помощью формна конце SharePoint.

0 голосов
/ 02 декабря 2013

Посмотрите на этот проект, он поддерживает SharePoint 2013 RestAPI. Он работает для меня, и я уверен, что он будет работать и для вас.Если вы хотите получить ответ в json, вам нужно написать эту строку в методе executeQuery.

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