경고
이 문서는 보관되었으며 구성 요소는 Windows 커뮤니티 도구 키트의 현재 버전에서 사용할 수 없습니다.
- 이 구성 요소를 8.x로 포팅할 수 없습니다.
- 이 구성 요소에 대한 알려진 권장 대체는 없습니다.
자세한 내용을 원하시면:
원본 설명서는 아래와 같습니다.
경고
(이 API는 나중에 제거될 예정입니다.)
Twitter 서비스를 사용하면 사용자가 데이터를 검색하거나 Twitter에 게시할 수 있습니다.
Twitter 개발자 사이트는 모든 Twitter 개발자를 위한 주요 콘텐츠 사이트입니다. Twitter 앱 목록을 방문하여 기존 앱을 관리합니다.
Twitter 포털 내에서 새로운 앱을 만들기 위해 새 Twitter 앱 생성을 사용할 수 있습니다.
앱 설정
소비자 키 애플리케이션 페이지의 키 및 액세스 토큰 탭에서 복사합니다.
소비자 암호 애플리케이션 페이지의 키 및 액세스 토큰 탭에서 복사합니다.
콜백 URI 애플리케이션에 대한 고유한 URI를 입력합니다. Twitter의 애플리케이션 세부 정보 탭에 있는 콜백 URL 필드와 일치해야 합니다.
예: https://myapp.company.com - (작업 URL일 필요는 없음)
개요
아래의 코드 섹션에서 GetUserTimeLineAsync 메서드는 일부 Tweet 개체를 반환합니다. 트윗 클래스는 트윗 텍스트 자체와 함께 몇 가지 기본 정보를 반환합니다.
| 재산 | 유형 | Description |
|---|---|---|
| 생성일시 | 문자열 | Twitter로 형식이 지정된 트윗의 날짜 및 시간 |
| Text | 문자열 | 트윗의 텍스트(리트윗하는 경우 텍스트가 완료되지 않을 수 있습니다. 원래 트윗에 RetweetedStatus 개체 사용) |
| Id | 문자열 | Twitter 상태 식별자 |
| GeoData | TwitterGeoData | 트윗의 위도 및 경도를 포함하는 클래스 |
| User | 트위터 사용자 | 사용자 ID, 이름, ScreenName 및 ProfileImageUrl을 포함하는 클래스 |
| RetweetedStatus | 트윗 | 이 트윗이 리트윗이면 이 개체에 원래 트윗이 포함됩니다. |
문법
// Initialize service
TwitterService.Instance.Initialize(ConsumerKey.Text, ConsumerSecret.Text, CallbackUri.Text);
// Login to Twitter
if (!await TwitterService.Instance.LoginAsync())
{
return;
}
// Get current user info
var user = await TwitterService.Instance.GetUserAsync();
ProfileImage.DataContext = user;
// Get user time line
ListView.ItemsSource = await TwitterService.Instance.GetUserTimeLineAsync(user.ScreenName, 50);
// Post a tweet
await TwitterService.Instance.TweetStatusAsync(TweetText.Text);
var status = new TwitterStatus
{
Message = TweetText.Text,
// Optional parameters defined by the Twitter "update" API (they may all be null or false)
DisplayCoordinates = true,
InReplyToStatusId = "@ValidAccount",
Latitude = validLatitude,
Longitude = validLongitude,
PlaceId = "df51dec6f4ee2b2c", // As defined by Twitter
PossiblySensitive = true, // As defined by Twitter (nudity, violence, or medical procedures)
TrimUser = true
}
await TwitterService.Instance.TweetStatusAsync(status);
// Post a tweet with a picture
await TwitterService.Instance.TweetStatusAsync(TweetText.Text, stream);
await TwitterService.Instance.TweetStatusAsync(status, stream);
// Search for a specific tag
ListView.ItemsSource = await TwitterService.Instance.SearchAsync(TagText.Text, 50);
// Open a connection with the stream service in order to receive live tweets and events
ListView.ItemsSource = _tweets;
await TwitterService.Instance.StartUserStreamAsync(async tweet =>
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
if (tweet != null)
{
_tweets.Insert(0, tweet);
}
});
});
// Stop receiving live tweets and events
TwitterService.Instance.StopUserStream();
' Initialize service
TwitterService.Instance.Initialize(ConsumerKey.Text, ConsumerSecret.Text, CallbackUri.Text)
' Login to Twitter
If Not Await TwitterService.Instance.LoginAsync() Then
Return
End If
' Get current user info
Dim user = Await TwitterService.Instance.GetUserAsync()
ProfileImage.DataContext = user
' Get user time line
ListView.ItemsSource = Await TwitterService.Instance.GetUserTimeLineAsync(user.ScreenName, 50)
' Post a tweet
Await TwitterService.Instance.TweetStatusAsync(TweetText.Text)
Dim status = New TwitterStatus With {
.Message = TweetText.Text,
' Optional parameters defined by the Twitter "update" API (they may all be null or false)
.DisplayCoordinates = True,
.InReplyToStatusId = "@ValidAccount",
.Latitude = validLatitude,
.Longitude = validLongitude,
.PlaceId = "df51dec6f4ee2b2c", ' As defined by Twitter
.PossiblySensitive = True, ' As defined by Twitter (nudity, violence, or medical procedures)
.TrimUser = True
}
Await TwitterService.Instance.TweetStatusAsync(status)
' Post a tweet with a picture
Await TwitterService.Instance.TweetStatusAsync(TweetText.Text, stream)
Await TwitterService.Instance.TweetStatusAsync(status, stream)
' Search for a specific tag
ListView.ItemsSource = Await TwitterService.Instance.SearchAsync(TagText.Text, 50)
' Open a connection with the stream service in order to receive live tweets and events
ListView.ItemsSource = _tweets
Await TwitterService.Instance.StartUserStreamAsync(
Async Sub(tweet)
Await Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
Sub()
If tweet IsNot Nothing Then
_tweets.Insert(0, tweet)
End If
End Sub)
End Sub)
' Stop receiving live tweets and events
TwitterService.Instance.StopUserStream()
타임라인에 게시가 표시되지 않습니다.
Twitter 앱 모델은 읽기 전용 애플리케이션을 허용합니다. 앱이 Readonly로 태그가 지정되었지만 게시를 시도하는 경우 오류가 반환되지 않습니다. 게시물이 서비스에 의해 사라졌습니다.
앱에서 게시하고 타임라인에 표시되지 않는 경우 앱 페이지의 사용 권한 탭을 확인합니다. 해당 탭에서 읽기 및 쓰기 를 선택해야 합니다.
비 UWP 플랫폼에서 서비스 사용
이 서비스에는 기본 제공 UWP 및 .NET Framework 지원이 있습니다. UWP 및 .NET Framework 플랫폼 외부에서 서비스를 사용하려면 일부 인터페이스를 구현해야 합니다. 이러한 인터페이스는 IAuthenticationBroker, IPasswordManager 및 IStorageManager입니다.
IAuthenticationBroker
IAuthenticationBroker에는 Authenticate 메서드만 있습니다. 이 메서드는 API를 사용하여 인증하는 데 사용할 요청 URI 및 콜백 URI를 받습니다. 이 메서드는 서비스에 인증 결과를 알려주는 AuthenticationResult를 반환합니다.
IPasswordManager
IPasswordManager를 사용하면 서비스에서 암호를 관리할 수 있습니다. 구현해야 하는 메서드는 Get, Store 및 Remove입니다.
Get 메서드는 문자열 키를 받고 PasswordCredential을 반환합니다.
Store 메서드는 문자열 리소스와 PasswordCredential을 받습니다.
Remove 메서드는 문자열 키를 받습니다.
IStorageManager
IStorageManager를 사용하면 서비스에서 애플리케이션 데이터를 저장할 수 있습니다. 구현해야 하는 메서드는 Get 및 Set입니다.
Get 메서드는 문자열 키를 받고 저장된 문자열을 반환합니다.
Set 메서드는 문자열 키와 문자열 값을 받습니다.
ISignatureManager
마지막으로 ISignatureManager는 OAuth 요청에 서명하는 GetSignature 메서드를 제공합니다. 이 메서드는 baseString, 비밀 문자열, 그리고 append 불리언을 받습니다. 그 대가로 서명된 baseString을 받게 됩니다. 부울 추가가 true인 경우 마지막 문자열은 끝에 있습니다 & .
도구 키트에는 UWP에 대한 각 구현이 있습니다. UwpAuthenticationBroker, UwpPasswordManager, UwpStorageManager 및 UwpSignatureManager로 찾을 수 있습니다.
샘플 프로젝트
Twitter 서비스 샘플 페이지 원본입니다. Windows 커뮤니티 도구 키트 샘플 앱에서 이 동작을 확인할 수 있습니다.
요구 사항
| 디바이스 패밀리 | 유니버설, 10.0.16299.0 이상 |
|---|---|
| 네임스페이스 | Microsoft.Toolkit.Uwp.Services |
| NuGet 패키지 | Microsoft.Toolkit.Uwp.Services |
API
.NET Community Toolkit