動機
GitHubって、userのフォローはできるけど、organizationってフォローできねえの?
例えば、loftkunはフォローボタンが表示されるけど(押してね)、googleは表示されないね。
まずは正攻法で。GitHub API v3 を試す。
userをfollow/unfollowする
まずはorganizationではなく、userをfollow/unfollowしてみよう
Basic認証とOAuth2認証どちらでもOK
Basic認証で
follow/unfollowできる。
$ USER=my_username
$ PASS=my_password
$ TARGET=target_username
$ # follow
$ curl -i -u ${USER}:${PASS} -X PUT -H 'Content-Length: 0' https://api.github.com/user/following/${TARGET}
$ # unfollow
$ curl -i -u ${USER}:${PASS} -X DELETE https://api.github.com/user/following/${TARGET}
OAuth2認証で
authorization 作成
最低限のスコープuser:follow
を持つauthorizationを作る
レスポンスにtoken
が含まれているので控えておこう。
$ USER=my_username
$ PASS=my_password
$ curl -i -u ${USER}:${PASS} -d '{"scopes":["user:follow"], "note":"user-follow"}' https://api.github.com/authorizations
作成したらPersonal access tokensで確認できる。
follow/unfollow
tokenを使ってfollow/unfollowできる。
パスワード使わなくていいし、最低限の権限しか無いので安全性が高いね。
$ TOKEN=控えておいたtoken
$ TARGET=target_username
$ # follow
$ curl -i -X PUT -H "Authorization: token ${TOKEN}" -H 'Content-Length: 0' https://api.github.com/user/following/${TARGET}
$ # unfollow
curl -i -X DELETE -H "Authorization: token ${TOKEN}" https://api.github.com/user/following/${TARGET}
organizationをfollow/unfollowしようとしてみる
こっからが今回試したかったこと。
organizationはfollowできないようである
前章のTARGET
をfollowしたいorganization名にして叩いてみる。
( 例えばgoogle
、facebook
、twitter
、yahoo
、yahoojapan
などだ。 )
結果、正常に204が返ってくるが、followはできてない。
user
配下のfollowing
のAPIだからorganization
には効かないんじゃね?と思うことにする。
organizationをfollowしている人は、いまぁす
そもそも、organizationをfollowしている人っているのだろうか?
followerは以下のようにして取得できる。
$ TOKEN=控えておいたtoken
$ TARGET=google
$ curl -i -H "Authorization: token ${TOKEN}" https://api.github.com/users/${TARGET}/followers | grep login
例えばgoogle
だと以下3人がfollowerとしてHITした。
organizationをfollowしている人はいる。いるけどめっちゃ少ない。
( このことはuser
APIにユーザ名としてorganization
名を指定できる実例でもある。 )
3人ともgoogleをfollowしてることが確認できる。
organization関連のAPIは?
organizationの情報を取得できるAPIにfollowerについての情報がないか調べてみよう。
Organizations
のページにてfollow
で検索するとGet an organization
が唯一ヒットする。
このAPIでgoogleのorganization情報を取得してみると
$ TOKEN=控えておいたtoken
$ TARGET=google
$ curl -i -H "Authorization: token ${TOKEN}" https://api.github.com/orgs/${TARGET}
( 略 : )
"followers": 0,
( 略 : )
googleのfollowerは0人とおっしゃっている。さっきの3人は・・・?
この辺はGitHub内部的にも整理が行き届いていないのかもしれない。
まとめ
- userはフォローできる。organizationはフォローできないかも。
-
PUT user/following/loftkun
で私(user)をフォローできるよ! -
PUT user/following/google
でgoogleをフォローできなかったよ。organizationはフォローできないかもね。
-
- organizationのフォロワーの調べ方は2つ
-
GET users/google/followers
は3人だよ、確かにその3人はgoogleをfollowしてるよ! -
GET orgs/google
のfollowers
は0人だよ、じゃあ上の3人は・・? - ちなみに両APIで取得したgoogleの
id
は一致してたよ。
-
organizationのフォローについて情報をご存知の方はお知らせいただけるとありがたいです。