質問

Office 365と私のローカルの現地のインストールにSharePointホストアプリを展開しました。すべてのアプリは、ユーザーのプロファイルプロパティを取得するために、ユーザープロファイルマネージャのためにREST APIを呼び出すことです。それが失敗するAPIを呼び出しようとしていても。

1)$.getJsonとURLを使用して呼び出しようとすると、クロスドメイン呼び出しで失敗しました。

2)リクエストエグゼクタとURLを使用しようとすると、それが失敗した(見つかりません)。

3)要求エグゼクティマとURLをhttp://host web url/_api/SP.UserProfiles.PeopleManager/GetMyPropertiesとして使用しようとすると。それはアクセス拒否および/または見つからないアクセスで失敗します。

まったく同じhttp://app web url/_api/SP.UserProfiles.PeopleManager/GetMyPropertiesを使用し、単にWebのタイトルを取得しようとした場合、それは正にうまく機能します。

http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'"はWebオブジェクトだけに制限されていますか?SharePointホストアプリからユーザープロファイルREST APIを呼び出す方法はありますか?

役に立ちましたか?

解決

Robの答えで上記のようにUser Profiles = Readにアクセス許可を設定し、次のコードが機能するはずです。私たちはここにクロスドメインを呼び出していないので要求エグゼクターを使用する必要はありません。

$.ajax({

    url:"http://<app web url>/_api/SP.UserProfiles.PeopleManager/GetMyProperties",
    headers:{ Accept:"application/json;odata=verbose" },
    success:function(data){
      alert(data.d.DisplayName);
    },
    error:function(jQxhr,errorCode,errorThrown){
      alert(errorThrown);
    }
});
.

他のヒント

あなたのアプリはユーザープロファイルへのアクセス許可を要求しますか?

Enter Image説明

権限も順番に追加する必要があります。最初にテナント、それからユーザープロファイル(社会)

App Permissions

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top