Development of steemconnect-firebase-functions doesn't stop, because I want to use it in the project I am going to start coding soon. Version 1.2 has just been released!
Quick Recap
steemconnect-firebase-functions is a library designed to help developers who want to create apps based on SteemConnect and Firebase. The library makes it easy to:
- implement OAuth2 Authorization Code Grant (enables user to log in to your app using SteemConnect)
- broadcast operations to Steem blockchain (post, comment, upvote, etc.)
- make operations on the Firebase products (Authentication, Firestore)
Links
- Github: https://github.com/jakipatryk/steemconnect-firebase-functions
- SteemProjects: https://steemprojects.com/projects/p/steemconnect-firebase-functions/
- NPM: https://www.npmjs.com/package/steemconnect-firebase-functions
New Features
Version 1.2.0 comes with a few new features. As I mentioned in the introduction, I am going to create a new project based on SteemConnect and Firebase, so I had to add them.
State
I have enabled to use so-called state variable in the SteemConnect authorization URL by adding optional parameter state in the getAuthorizationUrl function. This parameter can be used for example to prevent cross-site request forgery attacks.
createFirebaseAccount
I found it useful to add additional user data to the user profile, so they would become available on the auth object on the frontend. What kind of additional data am I talking about? Most important are username and photoURL (for example avatar).
I added createFirebaseAccount function that either creates an Firebase auth account or updates it if one already exists.
Example usage:
import { createFirebaseAccount } from 'steemconnect-firebase-functions';
import * as admin from 'firebase-admin';
const serviceAccount = require('../serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const uid = 'steemconnect:jakipatryk';
const username = 'jakipatryk';
const photoURL = 'https://some-uri.image/avatar';
createFirebaseAccount(admin, uid, username, photoURL).then(() => {
console.log(5 * 20 + 11);
});
See how I implemented it: COMMIT.
broadcastFollow
This version of steemconnect-firebase-functions also comes with new broadcast functions. First one simply broadcasts a follow to the blockchain.
Example usage:
import { broadcastFollow } from 'steemconnect-firebase-functions';
const accessToken = 'access-token';
const username = 'jakipatryk';
const userToFollow = 'ned';
broadcastFollow(accessToken, username, userToFollow).then(result => {
console.log(result);
});
See how I implemented it: COMMIT
broadcastUnfollow
So we can broadcast follow, it would be great if we could also broadcast unfollow. Yep, you are right.
Example usage:
import { broadcastUnfollow } from 'steemconnect-firebase-functions';
const accessToken = 'access-token';
const username = 'jakipatryk';
const userToUnfollow = 'ned';
broadcastUnfollow(accessToken, username, userToUnfollow).then(result => {
console.log(result);
});
See how I implemented it: COMMIT.
broadcastReblog
This one was actually kinda funny. Did you know that operation id of the reblog is... follow? I also didn't know, but it just works like that.
Example usage:
import { broadcastReblog } from 'steemconnect-firebase-functions';
const accessToken = 'access-token';
const username = 'jakipatryk-dev';
const postAuthor = 'jakipatryk';
const postPermlink =
'steemconnect-firebase-functions-version-1-1-0-has-just-been-published';
broadcastReblog(accessToken, username, postAuthor, postPermlink).then(
result => {
console.log(result);
}
);
See how I implemented it: COMMIT.
Summary
Version 1.2.0 of steemconnect-firebase-functions introduces a few new features, such as optional state variable in the SteemConnect authorization URL, createFirebaseAccount function to create Firebase auth account with user details, broadcastFollow, broadcastUnfollow, and broadcastReblog functions.
A new version might be released if I decide that I need some additional functionality during coding my new project, which is not public yet... Stay tuned ;)
Posted on Utopian.io - Rewarding Open Source Contributors