social-media-analytics-client
v0.0.1
Published
A package which provides you with the analytics of major social media platforms.
Downloads
5
Maintainers
Readme
@xorddotcom/social-media-analytics
A package which provides you with the analytics of major social media platforms.
Supported social media platforms
- Tiktok
- Youtube
- Twitch
Installation Guide
Install the package in your js/ts appication.
npm install @xorddotcom/social-media-analytics
OR
yarn add @xorddotcom/social-media-analytics
Integration Guide
Create facebook developer account. (https://developers.facebook.com/)
Create facebook app. (https://developers.facebook.com/apps/?show_reminder=true)
Configure facebook login for your facebook app. (https://developers.facebook.com/apps/{your-app-id}/fb-login/settings/)
Add your application's server URL in Valid OAuth Redirect URIs input.
Import Facebook constructor from the sdk. Create Facebook instance.
import { Facebook } from '@xorddotcom/social-media-analytics';
const facebook = new Facebook({
apiKey: '',
apiSecret: '',
redirectLink: '',
});
You'll find apiKey
as App ID and apiSecret
as App Secret from your facebook app's basic settings.
Methods
facebook.getAuthorizationLink()
returns authorization link which you can attach to your login with facebook button. After successful authorization facebook will redirect user to the redirect link you provided in the constructor with authorization code in query params.
facebook.getUserAccessToken(_authorizationToken)
returns user's access token which is obtained after successful authorization from authorization link above.
facebook.getUserDetails(_accessToken): UserObject
returns user's profile info. Function takes in access token which is obtained using getUserAccessToken function.
facebook.getUserLatestPosts(_accessToken): PostObject[]
returns user's latest posts list. Function takes in access token which is obtained using getUserAccessToken function.
facebook.getPostDetails(_postIdentifiers[], _accessToken): PostObject[]
returns user's post details list. Function takes in an array of post identifiers, these are obtained using getUserLatestPosts function. Function takes in access token which is obtained using getUserAccessToken function.
Response Objects
User Object
| property | value | | ----------- | ------ | | about | string | | email | string | | first_name | string | | last_name | string | | middle_name | string | | name | string | | link | string |
Post Object
| property | value | | ------------ | ------ | | engagements | number | | impressions | number | | reactions | number | | comments | number | | shares | number | | description | string | | created_time | string | | updated_time | string | | message | string |
Before you start you'll need.
- An Instagram Business Account or Instagram Creator Account
- A Facebook Page connected to that account
- A Facebook Developer account that can perform Tasks on that Page
- A registered Facebook App with Basic settings configured
Configure facebook login for your facebook app with permissions. (https://developers.facebook.com/apps/{your-app-id}/fb-login/settings/)
Add your application's server URL in Valid OAuth Redirect URIs input.
Import Instagram constructor from the sdk. Create Instagram instance.
import { Instagram } from '@xorddotcom/social-media-analytics';
const instagram = new Instagram({
apiKey: '',
apiSecret: '',
redirectLink: '',
});
You'll find apiKey
as App ID and apiSecret
as App Secret from your facebook app's basic settings.
Methods
instagram.getAuthorizationLink()
returns authorization link which you can attach to your login with instagram button. After successful authorization instagram will redirect user to the redirect link you provided in the constructor with authorization code in query params.
instagram.getUserAccessToken(_authorizationToken)
returns user's access token which is obtained after successful authorization from authorization link above.
instagram.getUserDetails(_accessToken): UserObject
returns user's profile info. Function takes in access token which is obtained using getUserAccessToken function.
instagram.getUserLatestPosts(_accessToken): PostObject[]
returns user's latest posts list. Function takes in access token which is obtained using getUserAccessToken function.
instagram.getPostDetails(_postIdentifiers[], _accessToken): PostObject[]
returns user's post details list. Function takes in an array of post identifiers, these are obtained using getUserLatestPosts function. Function takes in access token which is obtained using getUserAccessToken function.
Response Objects
User Object
| property | value | | ------------------- | ------------ | | id | string | | name | string | | username | string | | profile_picture_url | string | | biography | string | | media | PostObject[] |
Post Object
| property | value | | ------------ | ------ | | engagements | number | | impressions | number | | likes | number | | comments | number | | description | string | | created_time | string | | updated_time | string | | message | string |
Tiktok
Create Tiktok developer account.
Create Tiktok app. (https://developers.tiktok.com/apps/)
Fill in the basic information on Tiktok application dashboard.
Add login kit and Video kit as product in your Tiktok application.
In login kit find input with label Redirect domain, and add your application server's domain in it.
In Tiktok api section found at the bottom of Tiktok application dashboard. Add user.info.basic and video.list as scopes.
Submit your app for review. Tiktok SDK won't work if your app is not approved.
Import Tiktok constructor from the sdk. Create Tiktok instance.
import { Tiktok } from '@xorddotcom/social-media-analytics';
const tiktok = new Tiktok({
clientId: '',
clientSecret: '',
});
You'll find clientKey
and clientSecret
from your tiktok application's dashboard.
Methods
tiktok.getAuthorizationLink(_redirectLink)
returns authorization link which you can attach to your login with tiktok button. After successful authorization tiktok will redirect user to the redirect link you provided in function param with authorization code in query params.
tiktok.getUserAccessToken(_authorizationToken)
returns user's access token which is obtained after successful authorization from authorization link above.
tiktok.refreshAccessToken(_refreshToken)
returns user's refreshed access token which is obtained after successful authorization from authorization link above.
tiktok.getUserProfileInfo(_accessToken): UserObject
returns user's profile info. Function takes in access token which is obtained using getUserAccessToken function.
tiktok.getUserVideoList(_accessToken, _maxResults?, _sort?): VideoObject[]
returns user's latest video list. Function takes in access token which is obtained using getUserAccessToken function.
tiktok.getVideoDetails(_postIdentifiers, _accessToken): VideoObject[]
returns user's video details list. Function takes in an array of post identifiers, which can be video ids or video urls.
Response Objects
User Object
| property | value | | ----------------- | ------- | | avatar_url | string | | bio_description | string | | display_name | string | | follower_count | number | | is_verified | boolean | | open_id | string | | profile_deep_link | string | | likes_count | number | | following_count | number | | union_id | string |
Video Object
| property | value | | ----------------- | ------ | | engagements | number | | impressions | number | | id | string | | create_time | number | | cover_image_url | string | | share_url | string | | video_description | string | | duration | number | | height | number | | width | number | | title | string | | embed_html | string | | embed_link | string | | like_count | number | | comment_count | number | | share_count | number | | view_count | number |
Create twitter developer account. (https://developer.twitter.com/en/portal/petition/essential/basic-info)
You have to apply for developer account in order to use twitter's api service
Create twitter app. (https://developer.twitter.com/en/portal/projects-and-apps)
Get your bearer token by clicking on key icon. (https://developer.twitter.com/en/portal/projects/{projectId}/apps/{appId}/keys)
Import Twitter constructor from the sdk. Create Twitter instance.
import { Twitter } from '@xorddotcom/social-media-analytics';
const TwitterBearerToken = 'your app bearer token';
const twitter = new Twitter({ apiToken: TwitterBearerToken });
You'll find token
as Bearer Token from your twitter Projects and Apps selected app tab.
Methods
twitter.getTweetDetails(_tweetId[])
returns returns details and statistics of tweet with engagements and impressions using list of tweet ids, tweet id can be get from url bar of tweet detail page
twitter.getLatestTweets(_username[])
returns list of most recent 10 tweets of users using username, tweets id can be get from url bar of tweet detail page
twitter.getUserDetails(_userName[])
returns list of user details using list of twitter username, tweets id can be get from url bar of tweet detail page
Youtube
Create gmail account.(https://accounts.google.com/signup/v2/webcreateaccount?flowName=GlifWebSignIn&flowEntry=SignUp)
Create project on Google console. (https://console.cloud.google.com/)
Enable youtube v3 apis from. (https://console.cloud.google.com/apis/library/youtube.googleapis.com)
Create Api key for your app integration from. (https://console.cloud.google.com/apis/credentials)
Import youtube constructor from the sdk. Create youtube instance.
import { Youtube } from '@xorddotcom/social-media-analytics';
const youtubeBearerToken = 'your app api token';
const youtube = new Youtube({ apiToken: youtubeBearerToken });
You'll find token
as Api token from your google console project (https://console.cloud.google.com/apis/credentials).
Methods
youtube.getVideoDetails(videoUrls[])
returns details of video(s) with engagements and impressions using list of video urls, videos url can be get from url bar of video page
youtube.getLatestVideos(videoUrls[])
returns list of most recent 10 videos of channel(s) using list of video urls, videos url can be get from url bar of video page
youtube.getChannelDetails(channelUrls[])
returns list of channel details using array of channel urls in an array, videos url can be get from url bar of video page of youtube
Response Objects
Channel Object
| property | value | | -----------------------| ------- | | id | string | | title | string | | description | string | | customUrl | string | | publishedAt | string | | thumbnails | Object | | country | string | | localized | Object | | viewCount | string | | subscriberCount | string | | hiddenSubscriberCount | boolean | | videoCount | string |
Video Object
| property | value | | ------------------------ | ----------------| |publishedAt | string | |channelId | string | |title | string | |description | string | |thumbnails | Object | |channelTitle | string | |tags | Array | |categoryId | string | |liveBroadcastContent | string | |localized | Object | |viewCount | string | |likeCount | string | |favoriteCount | string | |commentCount | string | |impressions | number | |engagements | number |
Create linkedIn account.(https://www.linkedin.com/login)
Create an App. (https://developer.linkedin.com/) + user will need a linkedIn page to connect their app.
verify your app with page. (https://www.linkedin.com/developers/apps/{your app id}/settings)
set your authorized redirect urls to allow access to your url. (https://www.linkedin.com/developers/apps/{your app id}/auth)
User have to apply for Marketing Developer Platform in order to get access to api to fetch organization and user data (https://console.cloud.google.com/apis/credentials) applying to marketing developer platform may take some days to verify your access request. although app cannot get access to user data due to resource restriction from linkedIn.
Get your application creadentions such as Client ID and Client Secret (https://www.linkedin.com/developers/apps/{your app id}/auth)
Import LinkedIn constructor from the sdk. Create linkedIn instance.
import { LinkedIn } from '@xorddotcom/social-media-analytics';
const clientId = '78owxoz0fwu37s';
const clientSecret = 'aSypQ3MbeDDDAzAT';
const redirect_uri = 'https://testsocialapis.web.app/login/linkedin'; //should be same as you setted on application auth page
const linkedIn = new LinkedIn({
clientId,
clientSecret,
apiUrl: 'https://testsocialapis.web.app/login/linkedin',
});
Methods
linkedIn.getAuthorizationLink(redirect_uri)
returns authorization link which user can add on their auth button. This will redirect user to the social media platform and will ask them to authorize the given permissions. After successful authorization social media platform will redirect on the given redirect link in the constructor param with the auth code in the query params, which should be extracted and used to give them the access token for that particular user.
linkedIn.getAccessToken(_authenticationCode: string, _redirectLink: string)
returns user access token object by using authentication code obtain by using getAuthorizationlink methods url. access token then can be use to authenticate user while using other methods by sending access token in methods _accessToken parameter.
linkedIn.getAccessTokenFromRefreshToken(_refreshToken: string)
returns user access token object by using refresh token obtain by using getAccessToken methods url. access token then can be use to authenticate user while using other methods.
linkedIn.getOrgLatestPosts(_accessToken: string, _orgNames: string[])
returns organization's latest 10 posts list of multiple organizations taken as an array in parameter. Function takes in access token which is obtained using getAccessToken function.
linkedIn.getOrgPostDetails(_accessToken: string, _postUrls: string[])
returns organization's post details of multiple urls taken in an array as parameter. Function takes in array of post urls, these are obtained from url of post page in linkedIn function. Function takes in access token which is obtained using getUserAccessToken function.
linkedIn.getOrgDetails(_accessToken: string,_orgNames: string[],_getFollowers: boolean = true)
returns organization details by name. function take list of organization names as parameters and fetch details for all. second parameter "_getFollowers" is optional and true by default.
Response Objects
Organization Object
| property | value | | ----------------- | ------- | | orgId | string | | orgName | string | | orgWebsite | string | | orgAddress | number | | orgLogo | boolean | | orgFollowers | string |
Post Object
| property | value | | ------------------------ | --------------------------| |isReshareDisabledByAuthor | boolean | |createdAt | number | |postState | string | |lastModifiedAt | number | |visibility | string | |publishedAt | number | |title | string | |isEditedByAuthor | boolean | |content | { media: { id: string } } | |totalFirstLevelComments | number | |aggregatedTotalComments | number | |likedByCurrentUser | boolean | |totalFirstLevelLikes | number | |aggregatedTotalLikes | number | |impressions | number | |engagements | number |
Twitch
Create twitch account by signing up or loging in.(https://www.twitch.tv/)
Create an App. (https://dev.twitch.tv/console), user will need a twitch account with two factor authentication enabled.
Add your redirected urls.
Create secret and save it to integrate with your app. (https://dev.twitch.tv/console/apps/{your app id})
Copy client id with client secret as well.
Get your application creadentions such as Client ID and Client Secret
Import Twitch constructor from the sdk. Create twitch instance.
import { Twitch } from '@xorddotcom/social-media-analytics';
const clientSecret = 'your client secret';
const clientId = 'your client id';
const twitchApp = new Twitch({ clientId: clientId, clientSecret: clientSecret });
Methods
twitchApp.getAccessToken()
returns authorization link which user can add on their auth button. This will redirect user to the social media platform and will ask them to authorize the given permissions. After successful authorization social media platform will redirect on the given redirect link in the constructor param with the auth code in the query params, which should be extracted and used to give them the access token for that particular user.
twitchApp.getVideos(_videoUrls: string[], _accessToken: string)
returns user list of user details by username. array of username and a access token is required to fetch details. access token can be retrieve by using getAccessToken methods.
twitchApp.getClips(_clipsUrls: string[], _accessToken:string)
returns list of clips from live streams details by clip url. array of clip url and a access token is required to fetch details. access token can be retrieve by using getAccessToken methods.
twitchApp.getLatestLiveStreams(_userNames_: string[], _accessToken:string)
returns list of latest videos including streams and clips details by list of usernames present in url. array of video Ids and a access token is required to fetch details. access token can be retrieve by using getAccessToken methods.
twitchApp.getUsers(_userNames_: string[], _accessToken:string)
returns user list of user details by username. array of username and a access token is required to fetch details. access token can be retrieve by using getAccessToken methods.
Response Objects
User/Channel Object
| property | value | | ----------------- | ------- | |id | string | |login | string | |display_name | string | |type | string | |broadcaster_type | string | |description | string | |profile_image_url | string | |offline_image_url | string | |view_count | number | |followers | number | |email? | string | |created_at | string |
Live Stream Object
| property | value | | ----------------- | --------------| | id | string | | user_id | string | | user_login | string | | user_name | string | | game_id | string | | game_name | string | | type | string | | title | string | | viewer_count | number | | started_at | string | | language | string | | thumbnail_url | string | | tag_ids | Array | | is_mature | false |
Video Object
| property | value | | ----------------- | --------------| | id |string | | stream_id |string | | user_id |string | | user_login |string | | user_name |string | | title |string | | description |string | | created_at |string | | published_at |string | | url |string | | thumbnail_url |string | | viewable |string | | view_count |number | | language |string | | type |string | | duration |string | | muted_segments |null | [string]|
Clip Object
| property | value | | ----------------- | ---------------| | id | string | | url | string | | embed_url | string | | broadcaster_id | string | | broadcaster_name | string | | creator_id | string | | creator_name | string | | video_id | string | | game_id | string | | language | string | | title | string | | view_count | number | | created_at | string | | thumbnail_url | string | | duration | number | | vod_offset | number |