Do the UCWA or UCMA APIs support Skype for Business Online?

一世执手 提交于 2019-12-10 18:23:54

问题


We are trying to figure out whether the latest UCWA or UCMA supports Skype for Business Online. After a long search, I saw someone posted in March/April 2015 and said that UCMA/UCWA did not yet support it. But then, I could not find anything about this.

  1. Is the latest version able to support it?
  2. Where can I find any information about this?

回答1:


UCWA is now available for Skype for Business Online. The steps to get your UCWA application registered and authenticated are quite different to using UCWA for Skype for Business Server, but once you're signed in, the actual API is almost identical. Right now, the Skype for Business Online version of UCWA has slightly fewer capabilities than the Skype for Business Server version - for example, messages can be sent but not received - though this should change soon.

UCMA is not available for Skype for Business Online for the reasons explained in this question and answer.




回答2:


Skype for Business Online uses Azure AD for authentication, which you can authenticate against using username and password with the ADAL.net library.

http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/

I've created a sample .NET console app that signs into Skype for Business Online using UCWA and username and password authentication. It works in many simple scenarios.




回答3:


Before starting the following steps, user must register an application in Azure AD and give all the access to the necessary API and collect

  • Client ID
  • Client Secert

From PostMan extension: One can follow the following steps a meeting using UCWA on Skype For Business(SFB) online:

Step1 >Get the token for user

1) request in Only IE browser
    https://login.microsoftonline.com/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/authorize?
    response_type=code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &client_secret=bdjmKq**************************nQMtbzA=
    &resource=https://webdirin1.online.lync.com (This url should be used for user)

2) Post request token with code
    https://login.windows.net/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/token
    grant_type=authorization_code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &code=AQABAAIAAABnfiG-mA6NTae7CdWW7Qfda84eiCww0aSunFfvkaLq3OJZBDzX6*****97HQl****dsK53_7iM8Bq_qXWuH6M8TqPu5Py51eSB2QuhQyYcZv_28I36FC7ODudIp9_8zsxUmOKJbZXvDiEk0YjDkfacW2homgolt4mZ-E05_D4j77Gp3b1K0f7yuZbHPFjkvloIvOhPWYT953uIrJvj6Tm8zmTPpcAJeusuilXJAJS3Pl19o7zBwFBJ4EtkK06HsA_uGAZnrD2-0vxWadcUWv-fzijVCtEE9yZGGj6a0SQwu6XKdhunS7waAsKFAjDhJ6fP431pkWoD5mDRtXvz6riYMTLYRNjTS6UWyX2oBNO0DhoNXHG95YAoGDgftBvaUpI9*****ZIFPDUTPcYSRiYcMKF21ILCy1I_scXGmL1QtE1MSQjsu6c1lGZhVqzMEWHX57wcRiEHCTAlao-3fJm-KvYQn1DqiX3tJDkx0cmAEwr6iCeM37QEBKD-PZ0CAUrIY9uwXenaxkunoD_XG5YDuE2in4BcJiDwEccaFh0BdmQXEqln-pd9QgAA&session_state=0b92ca54-cd08-4a28-9f20-216245e289f0
    &redirectUri=http://localhost/TServ
    &resource=https://webdirin1.online.lync.com
    &client_secret=bdjmKq**************************nQMtbzA=

Step 2>Get Application URL:

Request:
URL:https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
    Authorization: Bearer <Previous access code>

Response:

    {
      "_links": {
        "self": {
          "href": "https://webpoolmaain***.infra.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user"
        },
        "applications": {
          "href": "https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications",
          "revision": "2"
        },
        "xframe": {
          "href": "https://webpoolmaain***.infra.lync.com/Autodiscover/XFrame/XFrame.html"
        }
      }
    }

Step 3>Get the token for application

1) request in Only IE browser
    https://login.microsoftonline.com/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/authorize?
    response_type=code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72
    &client_secret=bdjmKq**************************nQMtbzA=
    &resource=https://webpoolmaain***.infra.lync.com (this resource url is the application url got it from Step 2)

    response        http://localhost/TServ/?code=AQABAAIAAABnfiG-mA6NTae7CdWW7QfdAe8KrUbxREZpqyau_gGtw4QSTzq5MHmALQQa_n_AvVeK0iMRaESOZMkuGJ1a3bvWEYpMTHOyGfT2r9T8WbeSW7vJR-6Upnv6qI-nrT3kM8jXRni2V9S_y6xibRwDAE160XYeu9aJkbAE9Wq4HquYSUkC1bcNZSqmpubv2MiixMcjwL00YP8c53bRu44yWXr1FWr5Rgnc8VbnoZyxJF7CgfbTOrfDusXeLHj7OGGevyh8ZsKXYxJh9CrZ0u1NyGJgeGPFxDJbUxfkli49MW1x-Lbf2qhdPCN10b_nq3s5YD92Pk_S6mAtfmrVpTalEeHfSBTMqxAVtf3nc6f4QbQvTZx988HoQ_gHLLt_4J9trYTPA-OEmLUvmgu9DQHTpCAg_ACEPvi7bmMkBxtLo7tQp6fSXBUZ5p6buBqNYzPFs8b_BGodkRKU_hDqWbFc-nmHfx7qYmW1gVNB1G9LvfHGVqiNUg3KJBjcmonwKcu-JoYNIucd9xop15OtsBuusLEY8sEVstq9bIYyIw8__xH56MKh7wJTV_cm52qSq4E_d4ogAA&session_state=abe98e32-ffc7-4ed5-94d1-e894ed53d52d

2) post request token with code
    https://login.windows.net/88****-da69-4e7d-a5dc-b3a*****1d/oauth2/token
    grant_type=authorization_code
    &client_id=6e****44-2**3-4**2-8**c-e*******e72      &code=AQABAAIAAABnfiG-mA6**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************37QEBKD-PZ0CAUrIY9uwXenaxkunoD_XG5YDuE2in4BcJiDwEccaFh0BdmQXEqln-pd9QgAA&session_state=0b92ca54-cd08-4a28-9f20-216245e289f0
    &redirectUri=http://localhost/TServ
    &resource=https://webpoolmaain***.infra.lync.com
    &client_secret=bdjmKq**************************nQMtbzA=

    response
    {
      "token_type": "Bearer",
      "scope": "Contacts.ReadWrite Conversations.Initiate Conversations.Receive Meetings.ReadWrite User.ReadWrite",
      "expires_in": "3599",
      "ext_expires_in": "0",
      "expires_on": "1493981291",
      "not_before": "1493977391",
      "resource": "https://webpoolmaain***.infra.lync.com",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL3dlYnBvb2xtYWFpbjEwMi5pbmZyYS5seW5jLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0Lzg4MzU2ZGFjLWRhNjktNGU3ZC1hNWRjLWIzYWM1MzM0MWUxZC8iLCJpYXQiOjE0OTM5NzczOTEsIm5iZiI6MTQ5Mzk3NzM5MSwiZXhwIjoxNDkzOTgxMjkxLCJhY3IiOiIxIiwiYWlvIjoiWTJaZ1lEQXFTWGsrNGVEV3RiRmYyR01ZQmU4ZEZJN1A3UkpQWlRxVjdmRmNPZVRCdFJZQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI2ZTcxZGI0NC0yYjgzLTQ1YTItODcxYy1lY****************************************************************************************************************************************************************************************************************************************************************************************************************************************5ncy5SZWFkV3JpdGUgVXNlci5SZWFkV3JpdGUiLCJzdWIiOiJyZEF3Ql9XTjNQZlRaTEJaMmNfSmlEQ0QwVVFCNWZ0R0Y0Sk5JR25qZjRzIiwidGlkIjoiODgzNTZkYWMtZGE2OS00ZTdkLWE1ZGMtYjNhYzUzMzQxZTFkIiwidW5pcXVlX25hbWUiOiJnb3BhbHJlZGR5QHRlbHBzZ2Nsb3VkLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.BpPYsoUFp4zJQo9Iwllq8bOskKxHom2m9Fw4PXgwZraAfF-LopT54AyNLzfVhjdODbLETl4FnJn140M0pasUI5rMEXYFN2byzusNW3OHojlWbJ5-WpHj8NlQPE02oCwZ81MDqhV1eKjs34rp42F_tQZFXevBJYSMZRATtz4chtQnkzLhJ_c5p4MNmAcA7sdho9kaPUF45tj8bWF9n7ktrD8w2-r0DddKyUW5YXa_pOJzQp4GucoCKBOkIYS85OaAuFe4_kiQOG_dfm1s_HPat4BMyZxMFNuocD0ai-6t7ug7KZ-CK63aqLE9mK9sQSKx9uDo5TOO0-5-FDIIP9eNLA",
      "refresh_token": "AQABAAAAAABnfiG-mA6NTae7CdWW7Qfd2CWLGkoBoN9_yp-MKWaBRNCnAjH_YPC3YvbLUuGyKI4dzd4Y3W7y7-q7529kXaVLYIKDOISVtEKX-oHbNGjB4i2HdBXJpdWoiQsZiA2L7ZszaNevz06qUl5lqZjgzx3Lp5imPOyd0Ib_6****************************************************************************************************************************************************************************************************************************************************************************************************************************************Dpj4JIEjcWW8dDm-iplSLM4XpZJWvQ0hJDijkCOKxlg6Pab88I4YBwcrn1D5e1cS2tX3kVpGMBCN5YfRFHrET98293hd9Y88EmI1AFak3xoMOGPLePwH2C_gp2G-IiLLicNehvBdIAA",
      "id_token": "eyJ0eXAiOiJ****************************************************************************************************************************************************************************************************************************************************************************************************************************************eXRTQ0pJRlNNcWxIRWs3Q3RSODBwTW5XMk1rIiwidGlkIjoiODgzNTZkYWMtZGE2OS00ZTdkLWE1ZGMtYjNhYzUzMzQxZTFkIiwidW5pcXVlX25hbWUiOiJnb3BhbHJlZGR5QHRlbHBzZ2Nsb3VkLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0."
    }

Step 4>Get the application resource urls:

    Request Type: Post
    URL :https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications
    Headers:
    Authorization: Bearer <access code from Step 3.2>
    Accept: application/json
    Content-Type: application/json
    Body:
    {
     "UserAgent":"UCWASamples",
     "EndpointId":"88356dac-da69-4e7d-a5dc-b3ac53341e1d",
     "Culture":"en-US"
    }

    Response:
    {
      "culture": "en-US",
      "userAgent": "UCWASamples",
      "type": "Browser",
      "endpointId": "88356dac-da69-4e7d-a5dc-b3ac53341e1d",
      "instanceId": "default",
      "id": "10666478063",
      "_links": {
        "self": {
          "href": "/ucwa/oauth/v1/applications/10666478063"
        },
        "policies": {
          "href": "/ucwa/oauth/v1/applications/10666478063/policies"
        },
        "batch": {
          "href": "/ucwa/oauth/v1/applications/10666478063/batch"
        },
        "events": {
          "href": "/ucwa/oauth/v1/applications/10666478063/events?ack=1&key=c2lwOmdvcGFscmVkZHlAdGVscHNnY2xvdWQub25taWNyb3NvZnQuY29t-10666478063-ZGVmYXVsdA%3D%3D"
        }
      },
      "_embedded": {
        "me": {
          "uri": "sip:g*******y@t*******d.onmicrosoft.com",
          "name": "G**********y",
          "emailAddresses": [
            "g*******y@t*******d.onmicrosoft.com"
          ],
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/me"
            },
            "makeMeAvailable": {
              "href": "/ucwa/oauth/v1/applications/10666478063/me/makeMeAvailable",
              "revision": "2"
            },
            "photo": {
              "href": "/ucwa/oauth/v1/applications/10666478063/photos/g*******y@t*******d.onmicrosoft.com"
            }
          },
          "rel": "me"
        },
        "people": {
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people"
            },
            "presenceSubscriptions": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/presenceSubscriptions"
            },
            "subscribedContacts": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/subscribedContacts"
            },
            "presenceSubscriptionMemberships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/presenceSubscriptionMemberships"
            },
            "myGroups": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/groups",
              "revision": "2"
            },
            "myGroupMemberships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/groupMemberships",
              "revision": "2"
            },
            "myContacts": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/contacts"
            },
            "myPrivacyRelationships": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/privacyRelationships"
            },
            "myContactsAndGroupsSubscription": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/contactsAndGroupsSubscription"
            },
            "search": {
              "href": "/ucwa/oauth/v1/applications/10666478063/people/search",
              "revision": "2"
            }
          },
          "rel": "people"
        },
        "onlineMeetings": {
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings"
            },
            "myOnlineMeetings": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings"
            },
            "onlineMeetingDefaultValues": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/defaultValues"
            },
            "onlineMeetingEligibleValues": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/eligibleValues"
            },
            "onlineMeetingInvitationCustomization": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/customInvitation"
            },
            "onlineMeetingPolicies": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/policies"
            },
            "phoneDialInInformation": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/phoneDialInInformation"
            }
          },
          "rel": "onlineMeetings"
        },
        "communication": {
          "videoBasedScreenSharing": "Enabled",
          "6845cfcf-c21f-4187-8d43-5***e57811a5": "please pass this in a PUT request",
          "supportedModalities": [],
          "supportedMessageFormats": [
            "Plain"
          ],
          "audioPreference": "PhoneAudio",
          "publishEndpointLocation": true,
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication"
            },
            "mediaRelayAccessToken": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/mediaRelayAccessToken"
            },
            "mediaPolicies": {
              "href": "/ucwa/oauth/v1/applications/10666478063/mediaPolicies"
            },
            "conversations": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/conversations?filter=active"
            },
            "startMessaging": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/messagingInvitations",
              "revision": "2"
            },
            "startAudioVideo": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/audioVideoInvitations",
              "revision": "2"
            },
            "startOnlineMeeting": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/onlineMeetingInvitations?onlineMeetingUri=adhoc"
            },
            "joinOnlineMeeting": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/onlineMeetingInvitations"
            },
            "missedItems": {
              "href": "/ucwa/oauth/v1/applications/10666478063/communication/missedItems"
            }
          },
          "rel": "communication",
          "etag": "11133050"
        }
      },
      "rel": "application",
      "etag": "3184910031",
      "expires": "/Date(1494266184733)/"
    }

Step 5>Create Online Meeting:

    Request Type: Post
    URL :https://webpoolmaain***.infra.lync.com/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings  
    Headers:
    Authorization: Bearer <access code from Step 3.2>
    Content-Type: application/json      
    Body:
    {
        "accessLevel" : "Everyone",
         "attendanceAnnouncementsStatus":"Disabled",
         "description":"hey guys let's do a musical!",
         "subject":"Party Time",
         "attendees": ["sip:vetrivels@t*******d.onmicrosoft.com","sip:g*******y@t*******d.co.in"],
         "leaders": []
     }

     Response:
     {
          "accessLevel": "Everyone",
          "entryExitAnnouncement": "Disabled",
          "attendees": [
            "sip:vetrivels@t*******d.onmicrosoft.com",
            "sip:g*******y@t*******d.co.in"
          ],
          "automaticLeaderAssignment": "Disabled",
          "description": "hey guys let's do a musical!",
          "leaders": [],
          "onlineMeetingId": "JEHFP54F",
          "onlineMeetingUri": "sip:g*******y@t*******d.onmicrosoft.com;gruu;opaque=app:conf:focus:id:JEHFP54F",
          "legacyOnlineMeetingUri": "conf:sip:g*******y@t*******d.onmicrosoft.com;gruu;opaque=app:conf:focus:id:JEHFP54F?conversation-id=JEHFP54F",
          "onlineMeetingRel": "myOnlineMeetings",
          "organizerUri": "sip:g*******y@t*******d.onmicrosoft.com",
          "phoneUserAdmission": "Disabled",
          "lobbyBypassForPhoneUsers": "Disabled",
          "subject": "Party Time",
          "joinUrl": "https://meet.lync.com/t*******d/g*******y/JEHFP54F",
          "6845cfcf-c21f-4187-8d43-5***e57811a5": "please pass this in a PUT request",
          "_links": {
            "self": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings/JEHFP54F"
            },
            "onlineMeetingExtensions": {
              "href": "/ucwa/oauth/v1/applications/10666478063/onlineMeetings/myOnlineMeetings/JEHFP54F/extensions"
            }
          },
          "rel": "myOnlineMeeting",
          "etag": "3135154093"
    }

You have the following scope:

  • Contacts.ReadWrite
  • Conversations.Initiate
  • Conversations.Receive
  • Meetings.ReadWrite (Step 5 explains about creation of meeting)
  • User.ReadWrite

Refer: https://msdn.microsoft.com/en-us/skype/ucwa/skypeforbusinessonlinescopepermissions?f=255&MSPPError=-2147217396



来源:https://stackoverflow.com/questions/37219421/do-the-ucwa-or-ucma-apis-support-skype-for-business-online

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!