2013-04-25 5 views
0

Есть ли способ получить результаты UserGroup.GetUserInfo, но без указания пользователя, к которому я обращаюсь, например, с UserGroup.GetRolesAndPermissionsForCurrentUser?Получить данные пользователя Sharepoint для в настоящее время вошедшего в систему пользователя? (SOAP API)

В частности, я пытаюсь получить идентификатор пользователя (чтобы я мог узнать, был ли Документ выдан зарегистрированному пользователю или нет). К сожалению, я использую смарт-карту для предоставления учетных данных - для фактической библиотеки документов не введено имя пользователя или пароль. Поэтому я не могу использовать имя домена \ username для GetUserInfo, что я и делаю для использования не-смарт-карт ,

Кроме того, я на прошивкой, так что я на самом деле не имеют каких-либо хороших API-интерфейсы SharePoint для использования - все должно быть доступно через API, WebService 2007/2010 SOAP

Спасибо!

ответ

1

Вы должны иметь возможность использовать UserGroup.GetCurrentUserInfo. Документацию по SOAP для Sharepoint можно найти здесь http://msdn.microsoft.com/en-us/library/websvcusergroup.usergroup.getcurrentuserinfo(v=office.14).aspx.

Если у вас есть доступ к экземпляру Sharepoint вы можете проверить SOAP конверт и ответ здесь: htttp: //your.sharepointserver.com/_vti_bin/usergroup.asmx оп = GetCurrentUserInfo (не используйте этот URL в фактический запрос от вашего приложения).

Ниже приведен пример реализации на основе AFNetworking и подкласса AFHTTPClient.

// Get user info for currently signed in user 
- (void)currentUserInfoWithSuccessBlock:(void(^)(SharepointCurrentUserResponse *response))successBlock 
           failBlock:(void(^)(NSError *error))failBlock { 

    NSMutableURLRequest *request = [self requestWithMethod:@"POST" 
                path:@"_vti_bin/UserGroup.asmx" 
               parameters:nil]; 

    NSString *soapEnvelope = 
    @"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
    @"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" 
    @"<soap:Body>" 
    @"<GetCurrentUserInfo xmlns=\"http://schemas.microsoft.com/sharepoint/soap/directory/\" />" 
    @"</soap:Body>" 
    @"</soap:Envelope>"; 

    // Set headers 
    [request setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:@"http://schemas.microsoft.com/sharepoint/soap/directory/GetCurrentUserInfo" forHTTPHeaderField:@"SOAPAction"]; 

    // Content length 
    NSString *contentLength = [NSString stringWithFormat:@"%d", soapEnvelope.length]; 
    [request setValue:contentLength forHTTPHeaderField:@"Content-Length"]; 

    // Set body 
    [request setHTTPBody:[soapEnvelope dataUsingEncoding:NSUTF8StringEncoding]]; 

    AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request 
    success:^(AFHTTPRequestOperation *operation, id responseData) { 
     NSString *xmlString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
     NSLog(@"XML response : %@", xmlString); 

     // Parse the response 
     SharepointCurrentUserResponse *response = ... 

     successBlock(reponse); 
    } 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Get user info failed with reason: %@ status code %d", 
      error, operation.response.statusCode); 

     failBlock(error); 
    }]; 

    // Que operation 
    [self enqueueHTTPRequestOperation:operation]; 
} 
+0

Похоже, это доступно только в 2010 году, а не 2007. Не будет работать для меня, но ваш ответ подходит для всех, кто работает в 2010 году – cscott530

Смежные вопросы