2015-01-14 2 views
0

내 멋진 라이브러리의 검색 옵션을 사용하여 TwitterAccount에서 짹짹 목록을 표시하려면 Xamarin.IOS Unified App에 LinqToTwitter v3.1.1을 응용 프로그램 전용 인증과 함께 사용하고 있습니다. 그러나 간단한 검색을 실행하면 TwitterQueryProvider에서 처리되지 않은 NullReference 예외가 발생합니다. 다음과 같이LinqToTwitter를 사용하여 NullReferenceException 검색 기능

내가 작성한 코드는 다음과 같습니다 아래의 스택 트레이스의

var credentialStore = new InMemoryCredentialStore 
{ 
    ConsumerKey = "MyTwitterKey", 
    ConsumerSecret = "MyTwitterSecret" 
}; 

var authorizer = new ApplicationOnlyAuthorizer { CredentialStore = credentialStore }; 
await authorizer.AuthorizeAsync(); 

var twitterCtx = new TwitterContext(authorizer); 

var searchResponse = await (from search in twitterCtx.Search 
          where search.Type == SearchType.Search 
           && search.Query == "Microsoft" 
          select search) 
           .SingleOrDefaultAsync(); 

if (searchResponse != null && searchResponse.Statuses != null) 
{ 
    foreach (var tweet in searchResponse.Statuses) 
    { 
     Debug.WriteLine("User: {0}, Tweet: {1}", tweet.User.ScreenNameResponse, tweet.Text); 
    } 
} 

부 : 검색이 실행되고 var에 searchResponse에 투입 될 때

{System.NullReferenceException: Object reference not set to an instance of an object 
at LinqToTwitter.TwitterQueryProvider+<ExecuteAsync>d__6`1[System.Collections.Generic.IEnumerable`1[LinqToTwitter.Search]].MoveNext() [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown --- 

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000b] in [somepath]/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:62 
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Object].GetResult() [0x00034] in [somepath]/System.Runtime.CompilerServices/ConfiguredTaskAwaitable_T.cs:62 
at LinqToTwitter.TwitterExtensions+<ToListAsync>d__11`1[LinqToTwitter.Search].MoveNext() [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown --- 

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000b] in [somepath]/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:62 
at System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Generic.List`1[LinqToTwitter.Search]].GetResult() [0x00034] in [somepath]/System.Runtime.CompilerServices/TaskAwaiter_T.cs:59 
at [somepath].TwitterService+<GetTweets>d__2.MoveNext() [0x0014f] in [somepath]\TwitterService.cs:27 } 

오류가 발생합니다. 나는 인증이 성공했고 bearertoken이 설정되었음을 확인했다. LINQ to Twitter Project site on Codeplex에 Joe Mayo 자신이 제공 한 간단한 예제 이외에는 멋진 내용이 없습니다.

나는 트위트 목록 수신까지 (같은 자격 증명으로) 작동하는 LinqToTwitter를 사용하지 않고 무언가를 시도했지만 LinqToTwitter로 이동하기 위해 선택한 직렬화 이유 때문에.

토큰을 설정하거나 어딘가에 권한을 부여하는 것과 같이 여기에서 분명한 뭔가를 놓치고있는 것처럼 느껴지지만 찾을 수 없습니다. codeplex의 소스 파일에 포함 된 데모 콘솔 프로젝트는 완벽하게 작동하는 것 같습니다. 어떤 아이디어가 있습니까?

+0

아무거나, 누구? 여전히 유효! – Hutjepower

답변

0

역사적인 목적을 위해 가능한 솔루션에 대한 답변을드립니다.

간단히 말해서 linqtotwitter의 소문자 ID를 설정하기 위해 NuGet의 packages.config를 직접 편집하면 내 모든 문제가 제거되는 것 같습니다.

이 문제는 절대로 실제로 해결할 수 없었습니다. 현재 v3.1.2를 사용하고 있으며 복원 할 수없는 패키지에 문제가 있습니다 (참고 : Mac에서는 Xamarin Studio에서만 대소 문자를 구분 함). 하지만 NuGet 덕분에 비슷한 문제가있는 this topic 명의 사용자가 발생했습니다. PCL과 iOS 프로젝트에서 packages.config를 수동으로 편집하여 "LinqToTwitter"대신에 "linqToTwitter"대신 id = "linqtotwitter"를 선언했습니다.

희망이 도움이 ...

-1

내 자신의 앱에 검색 코드를 복사 했으므로 잘 실행되었습니다. 난 당신의 코드에서 다른 SingleUserAuthorizer보다는 ApplicationOnlyAuthorizer하지만 유일한 차이를 이용하고 있고 내 내가 있다는 것입니다 :

  • 가 포함 accessTokenaccessTokenSecret
  • 나는 선이 없습니다 : await authorizer.AuthorizeAsync();

희망을 조금 도움이되는 것

+0

댓글을 주셔서 감사합니다. 그러나이 특별한 ApplicationOnlyAuthorizer를 사용하고 있기 때문에 유령 사용자를 만드는 데 쓸모가 없습니다 ... – Hutjepower