WCF 데이터 서비스를 통한 OAuth 설정 작업을하고 있습니다. 경우에 따라 키가 URL이므로 공급자 사용자 키에 대한 데이터 소스를 쿼리 할 때 문제가 발생합니다. 예를 들어, 구글은 https://www.google.com/accounts/o8/id?id=AItOawnDT8v-6rdRI221piLFbOBT1m3EYTizmDQ
쿼리의 URL이 포함 된 WCF 데이터 서비스
나는 다음과 같은 기능이 있습니다,
public override int GetUserIdFromOAuth(string provider, string providerUserId)
{
var encodedUserId = Uri.EscapeDataString(providerUserId);
var user = service.OAuthMemberships
.Where(o => o.Provider == provider &&
o.ProviderUserId == encodedUserId)
.SingleOrDefault();
if (user == null)
return -1;
return user.UserId;
}
그것은 ProviderUseId
그냥 숫자이기 때문에 트위터에 잘 작동하지만, 구글과 야후에 대한 UserId
이 URL 인 내가 할 수있는 일치시키지 마라. URL이 같다는 것을 알더라도 항상 0 개의 결과가 나온다. 나는 URL (또는 다른 쿼리가 실패합니다) 이스케이프 해요,하지만 어떻게해야 일치처럼 그것을 찾을 수 있습니까?
===== 편집
내가 내가 먼저 공급자에 쿼리하여 작동시킬 수있어 - (A ToList을) 다음 ProviderUserId에 쿼리 - 다음 인코딩 할 필요가 없습니다 것입니다 DataServices를 통해 전송되지 않기 때문입니다. 그러나 나는 해결 방법으로서 전선에 걸쳐 단일 공급자에 대한 모든 기록을 철회하려는 생각을 좋아하지 않는다.