2

SharePointオンライン用のアプリを開発していて、iOSアプリでSharePointRestインターフェイスを使用したいと考えています。iOSでSharePointRestインターフェイスを使用する手順を教えてください。

4

4 に答える 4

1

私はそれを理解しました、以下は従うべきステップです:

  1. iOSアプリにRestKitを含めます。

  2. ホーム画面にUIViewを作成し、ログインページをロードします。

    http://サーバー名/Pages/default.aspxをUIWebViewにロードします

  3. webViewDidFinishedメソッドで、Fed Authトークンを見つけて、リクエストURLを追加します

     - (void)webViewDidFinishLoad:(UIWebView *)webView {
       //Retrive HTTPOnly Cookie
       NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
       NSArray *cookiesArray = [storage cookies];
    
       //Search for Fed Auth cookie
       for (NSHTTPCookie *cookie in cookiesArray) {
    
        if ([[cookie name] isEqualToString:@"FedAuth"]) {
        /*** DO WHATEVER YOU WANT WITH THE COOKIE ***/
    
        NSLog(@"Found FedAuth");
    
    
        NSURL *url=[NSURL URLWithString:@"http://my server/_vti_bin/listdata.svc"];
        RKClient *client = [RKClient clientWithBaseURL:url];
        client.requestQueue.requestTimeout = 10;
        client.cachePolicy = RKRequestCachePolicyNone;
        client.authenticationType = RKRequestAuthenticationTypeHTTPBasic;
        client.username = @"username";
        client.password = @"Password";
    
        NSString *cookieVale=[cookie value];
        NSString *getResourcePath=[@"?" stringByAppendingFormat:@"%@",cookieVale];
    
        [client get:getResourcePath delegate:self];
    
    
        break;
    }
    }
    
    }
    
  4. そして、ここであなたは応答を見つけることができます。

    - (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response {
    
    
    id xmlParser = [[RKParserRegistry sharedRegistry] parserForMIMEType:RKMIMETypeXML];
    NSError *error = nil;
    id parsedResponse = [xmlParser objectFromString:[response bodyAsString] error:&error];
    RKLogInfo(@"Parsed response : %@, error:%@",parsedResponse,error);
    
    
    
    if ([response isSuccessful]) {
    NSLog(@"%d",[response isCreated]);
    // Response status was 200..299
    if ([response isCreated] && [response isJSON]) {
        // Looks like we have a 201 response of type application/json
        RKLogInfo(@"The JSON is %@", [response bodyAsJSON]);
    }
    } else if ([response isError]) {
    // Response status was either 400..499 or 500..599
    RKLogInfo(@"Ouch! We have an HTTP error. Status Code description: %@", [response localizedStatusCodeString]);
    }
    }
    
于 2012-11-05T10:57:46.043 に答える
1

自己受容的な答えは私に多くの試行錯誤を失いました。rtFacookieも取得する必要があるという事実のようないくつかの重要な側面が省略されています。そして、usersコードで提供されるclient.username =@"username"およびclient.password=@"Password"はどうなっていますか。それは何ですか?クライアントはいつでもユーザー名やパスワードを知らないことに注意してください...

AAAnyway、以下は正しい方向にあなたを導く素晴らしい記事です:http: //www.codeproject.com/Articles/571996/Development-of-iPhone-client-application-for-Share

また、UIWebViewを使用せずにCookieを取得する方法について説明します http://allthatjs.com/2012/03/28/remote-authentication-in-sharepoint-online/

于 2014-03-21T09:48:38.703 に答える
0

後続のすべてのリクエストとともにFedAuthCookieを送信します。

認証されたら、REST APIを呼び出すことができます。ドキュメントは次のとおりです: http://msdn.microsoft.com/en-us/library/fp142385(v = office.15) .aspx#bk_determining

于 2012-11-02T10:34:21.363 に答える
0

ユーザーがOffice365Sharepointインスタンスへのサインインプロセスを完了すると、Webビューはいくつかの手順でリダイレクトされます。実際のSharepointWebサイトをロードする前の最後のステップの1つとして、Webビューは「about:blank」をロードするように求められます。

Webビューが「about:blank」のロードを開始したことを検出し、ユーザーがサインインプロセスを終了したことを確認して、Webビューを閉じることができます。以下のサンプルコード。

// Load page in web view
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  NSLog(@"WebView should start loading %@", request.URL.absoluteString);

  // Detect that the user finished the sign in process
  if ([request.URL.absoluteString isEqualToString:@"about:blank"]) {

    // Do your stuff here

    return NO;
  }

  return YES;
}

認証が成功した場合、SharepointインスタンスはFedAuthCookieも設定します。Cookieは、サーバーへの今後のリクエストに含める必要があります。

Cookieを手動で追加する必要はありません。これは、Cookieが受け入れられてNSHTTPCookieStorageに保存され、同じサーバーにリクエストを送信している限り、URL読み込みシステムによって処理されます。

Appleのドキュメントから

URL読み込みシステムは、NSURLRequestに適した保存済みのCookieを自動的に送信します。リクエストでCookieを送信しないように指定されていない限り。同様に、NSURLResponseで返されるCookieは、現在のCookie受け入れポリシーに従って受け入れられます。

于 2013-05-28T16:45:54.007 に答える