0

UserGroup.GetUserInfoのように、照会しているユーザーを指定することなく、結果を取得する方法はありますUserGroup.GetRolesAndPermissionsForCurrentUserか?

特に、ユーザー ID を取得しようとしています (ドキュメントが現在ログインしているユーザーにチェックアウトされているかどうかを確認できるようにするため)。残念ながら、資格情報を提供するためGetUserInfoにスマート カードを使用しています。実際のドキュメント ライブラリにはユーザー名またはパスワードを入力していません。

さらに、私は iOS を使用しているため、使用する優れた SharePoint API は実際にはありません。2007/2010 SOAP WebService API を介してすべてを利用できる必要があります。

ありがとう!

4

1 に答える 1

1

使えるはずですUserGroup.GetCurrentUserInfo。SharePoint SOAP ドキュメントは、http://msdn.microsoft.com/en-us/library/websvcusergroup.usergroup.getcurrentuserinfo (v=office.14).aspx にあります。

Sharepoint インスタンスにアクセスできる場合は、SOAP エンベロープと応答をここで確認できます: htttp://your.sharepointserver.com/_vti_bin/usergroup.asmx?op=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];
}
于 2013-05-26T16:58:03.917 に答える