我正在使用Adal 4应用程序与Adal angular4连接。我可以查看用户信息,这意味着我可以登录到sharepoint在线应用程序。但是在我无法使用api获得列表之后。
const url = 'https://sitename/sites/applicationName/_api/lists/getbytitle(\'tenets\')/items';
const myHeaders = new HttpHeaders({
'Authorization': 'Bearer ' + this.adalService.getCachedToken(environment.config.clientId),
'content-type': 'application/json;odata=verbose'
});
return this.http.get(url, { headers: myHeaders }).subscribe(
data => console.log(data),
err => console.log(err),
() => console.log('in complete')
);发布于 2018-12-17 07:24:09
SharePoint Online用于存储数据,并可用作web。我们正在将这个web集成到Angular应用程序中。下面的步骤有助于将angular4 4与Angular7集成
使用下面的命令安装最新版本的Adal角,
npm install adal-angular4 –save在provider @app.module.ts中添加AdalService和AdalGurad
providers: [ AdalService, AdalGuard],在src/Environment.ts文件中设置SharePoint配置
例如:
export const environment = {
production: false,
config: {
tenant: 'tenant-id,
clientId: 'client-id',
redirectUri: 'http://localhost:4200/'
}
};创建一个服务并导入AdalService,并在构造函数中为AdalService创建一个私有变量。在构造函数() Ex: Web.service.ts中初始化您的SharePoint在线配置
import { AdalService } from 'adal-angular4';
constructor(private adalService: AdalService) {
this.adalService.init(environment.config);
}在服务Ex中编写下面提到的方法:
handleWindowCallback() {
this.adalService.handleWindowCallback();
}
login() {
this.adalService.login();
}
logout() {
this.adalService.logOut();
}
get authenticate() {
return this.adalService.userInfo.authenticated;
}一旦定义了上述方法,请在登录组件中设置您的登录过程。通常,成功登录后,SharePoint只会重定向到登录组件,因此我们正在验证登录并重定向到特定页面。例如:
import { WebService } from '../web.service';
constructor(private webService: WebService) { }
ngOnInit() {
this.webService.handleWindowCallback(); // this is to store the token to adal storage
if (this.webService.authenticate) {
this.router.navigate(['/', 'dashboard']);
}
}
login() {
this.webService.login();
}在auth.guard.ts中添加以下代码,以检查用户是否在每次路由之前都经过身份验证,并借助服务中存在的authenticate()方法,
constructor(private webService: WebService) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> |boolean{
if (this.webService.authenticate) {
return true;
} else {
this.router.navigate(['/']);
return false;
}
}
}在登录组件中添加下面提到的代码,以便在每次登录和注销请求时调用服务,
login() {
this.webService.login();
}
logout() {
this.webService.logout();
}在服务中编写以下方法,使用URL向SharePoint发出请求,并通过传递标题获得相应的响应,
import 'rxjs/add/operator/mergeMap';
getdata(listname): Observable<any> {
const url = 'https://sitename.sharepoint.com/sites/application_name/_api/web/lists/
getByTitle(\'' + listname + '\')/items';
return this.adalService.acquireToken('tenantid/tenant name')
.flatMap(token => {
const headersParam = new HttpHeaders({
'Content-Type': 'application/json;odata=verbose',
'Authorization': 'Bearer ' + token.toString()
});
return this.http.get(url, { headers: headersParam });
});
}在要获取和处理数据的组件中添加下面提到的方法。
getdata() {
const listname = 'tenets';
this.webService.getdata(listname).subscribe(data => {
console.log(data);
});
}此方法打印“原则”列表的值和标题,
https://stackoverflow.com/questions/53475820
复制相似问题