通过 Retrofit 传递 facebook AccessToken

Pass facebook AccessToken by Retrofit

我正在尝试使用 Retrofit 从 Facebook 页面获取帖子,但我无法传递访问令牌,每次我都收到错误 io.reactivex.exceptions.OnErrorNotImplementedException: HTTP 400 Bad Request

这是我的代码:

RetroAPI:

@GET("{page_id}/feed")
fun getPosts(@Path("page_id") pageId : String,
             @Header("access_token") authToken : AccessToken)
             : Observable<Posts>

设置访问令牌:

 AccessToken.setCurrentAccessToken(AccessToken("AppToken", "AppID","userID",null,null,null,null,null))

获取数据:

  var pagePosts : Observable<Posts> = facebook.getPosts("pageID", AccessToken.getCurrentAccessToken())
    pagePosts.observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe({result ->
                var a : Posts = result
                var b : List<Data> = result.data
                Log.d("Posts A","${a.data[1].id}")
                Log.d("Data B", "$b")
            })

设置 RetrofitAPI:

private val facebook : RetroAPI
    init{
        val retrofit = Retrofit.Builder()
                .baseUrl("https://graph.facebook.com/")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build()

        facebook = retrofit.create(RetroAPI::class.java)
    }

通常 access_token 作为查询参数发送以验证您的请求。

不过您也可以发送 header 形式

授权:Bearer XXX

但是 AFAIK 不支持将 access_token 作为 header 发送。