Аутентификация в Yammer в консольном приложении С#

Я использую NuGet Yammer API и пытаюсь просто пройти аутентификацию и отобразить токен в качестве теста.

К сожалению, я не могу заставить его работать. Я новичок в этом, но документации по NuGet Yammer API нет, и это будет консольное приложение. Все примеры и документация на странице разработчиков Yammer показывают, как это делается из веб-приложения.

Мой код до сих пор:

static void Main(string[] args)
{
    var myConfig = new ClientConfigurationContainer
    {

        ClientCode = null,
        ClientId = "CODEHERE",
        ClientSecret = "CODEHERE"
    };
    var myYammer = new YammerClient(myConfig);
    var test = myYammer.GetToken();
    Console.WriteLine("Token" + test);
    Console.ReadLine();
}

person realtek    schedule 05.02.2014    source источник
comment
На всякий случай: вы добавили свои ClientId и ClientSecret в свой код? :)   -  person Andrei    schedule 05.02.2014
comment
Да, лол ... Я удалил их, чтобы опубликовать здесь :)   -  person realtek    schedule 05.02.2014
comment
Ошибки нет, просто не отображается какой-либо токен... Я просто получаю слово Token в окне консоли, которое отображается   -  person realtek    schedule 05.02.2014
comment
Что ж, после того, как я остановлю приложение, я получаю «System.Runtime.Serialization.SerializationException», произошедшее в RestSharp.dll, но это может быть просто потому, что я завершил приложение?   -  person realtek    schedule 05.02.2014
comment
Происходит то, что оболочка API не учитывает некоторое значение в ответе JSON от Yammer. Вам нужно посмотреть InnerException для SerializationException. Когда вы используете статические языки, такие как C#, вам нужно обратить особое внимание на то, как вы обрабатываете пустые случаи в JSON, иначе эта проблема возникнет.   -  person Brian Lyttle    schedule 07.02.2014


Ответы (2)


Это проверка подлинности OAuth, для получения маркера необходимо взаимодействовать с веб-страницей Yammer OAuth.

Вы должны посмотреть пример asp.net mvc в источниках на Github.

В HomeController.cs:

[HttpPost]
public ActionResult Index(IndexViewModel model)
{
    if (ModelState.IsValid)
    {
        var myConfig = new ClientConfigurationContainer
        {
            ClientCode = null,
            ClientId = model.ClientId,
            ClientSecret = model.ClientSecret,
            RedirectUri = Request.Url.AbsoluteUri + Url.Action("AuthCode")
        };

        var myYammer = new YammerClient(myConfig);

        // Obtain the URL of Yammer Authorisation Page
        var url = myYammer.GetLoginLinkUri();

        this.TempData["YammerConfig"] = myConfig;

        // Jump to the url page
        return Redirect(url);
    }
    return View(model);
}

И Yammer перенаправит вас сюда:

public ActionResult AuthCode(String code)
{
    if (!String.IsNullOrWhiteSpace(code))
    {
        var myConfig = this.TempData["YammerConfig"] as ClientConfigurationContainer;
        myConfig.ClientCode = code;
        var myYammer = new YammerClient(myConfig);
        // var yammerToken = myYammer.GetToken();
        // var l = myYammer.GetUsers();
        // var t= myYammer.GetImpersonateTokens();
        // var i = myYammer.SendInvitation("[email protected]");
        // var m = myYammer.PostMessage("A test from here", 0, "Event");
        return View(myYammer.GetUserInfo());
    }
    return null;
}
person Raynald    schedule 26.08.2014
comment
Кажется, есть ошибка в API. Внутри YammerClient.cs в GetAccessToken() необходимо передать false в тело использования, поскольку это команда GET, и это не удается. - person John; 28.02.2015

Человек, который написал API, также написал статью о том, как его использовать, которая находится здесь:

http://fullsaas.blogspot.fr/2013/05/a-simple-net-wrapper-of-yammer-api.html

Это также может быть полезно:

https://blogs.technet.com/b/speschka/archive/2013/10/05/using-the-yammer-api-in-a-net-client-application.aspx

person Arry    schedule 06.02.2014