在我的应用程序中,我希望任何用户都可以使用他们的 Facebook 帐户登录。当我使用创建 Facebook 开发者帐户的同一个 Facebook 帐户时,它工作正常,但每当我尝试使用任何其他帐户登录时都会出错
{RequestAsyncTask: connection: null, requests: [{Request: accessToken: {AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile]}, graphPath: /500635634641164/live_videos, graphObject: {"title":"test","value":"EVERYONE"}, httpMethod: POST}]}
我已经尝试了所有可能的解决方案,但仍然遇到同样的问题。这是我的代码:
class FacebookActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_facebook)
val accessToken = AccessToken.getCurrentAccessToken()
val isLoggedIn = accessToken != null && !accessToken.isExpired
if (isLoggedIn) {
getUserId()
} else {
login()
}
}
private fun login() {
progress.visibility = View.GONE
callbackManager = CallbackManager.Factory.create()
LoginManager.getInstance().registerCallback(callbackManager,
object : FacebookCallback<LoginResult?> {
override fun onSuccess(loginResult: LoginResult?) {
// App code
getUserId()
}
override fun onCancel() {
// App code
}
override fun onError(exception: FacebookException) {
// App code
}
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
callbackManager.onActivityResult(requestCode, resultCode, data)
super.onActivityResult(requestCode, resultCode, data)
}
private fun getUserId() {
progress.visibility = View.VISIBLE
val request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken()
) { jsonObject, response ->
// Insert your code here
val id = jsonObject.get("id")
val name = jsonObject.get("name")
val response = response.rawResponse
Log.d("FB", "userId: $id")
getLiveVideoUrl(id.toString())
}
val parameters = Bundle()
parameters.putString("fields", "id,name")
request.parameters = parameters
request.executeAsync()
}
private fun getLiveVideoUrl(userId: String) {
val request = GraphRequest.newPostRequest(
AccessToken.getCurrentAccessToken(),
"/$userId/live_videos",
JSONObject("{\"title\":\"test\", \"value\":\"EVERYONE\"}")
) {
progress.visibility = View.GONE
val url = it.jsonObject.get("secure_stream_url")
val id = it.jsonObject.get("id")
startActivity(intent)
}
request.executeAsync()
}
}