-2
我想實現用kotlin編寫的Facebook登錄。下面的代碼工作正常:無法編譯Kotlin代碼
包social.social
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.facebook.*
import com.facebook.login.LoginResult
import com.facebook.login.LoginManager
import com.facebook.login.widget.LoginButton
import org.json.JSONObject
import java.util.*
class MainActivity : AppCompatActivity() {
private var callbackManager: CallbackManager? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
callbackManager = CallbackManager.Factory.create()
var loginBtn: LoginButton = findViewById(R.id.login_button) as LoginButton
loginBtn.setReadPermissions(Arrays.asList("public_profile","email","user_photos"))
loginBtn.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onCancel() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onError(error: FacebookException) {
print("error" +error.message)
}
override fun onSuccess(result: LoginResult) {
GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback {
obj: JSONObject, response: GraphResponse ->
println(obj.toString())
println(obj.getString("email"))})
println("successful" + result.accessToken)
}
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager!!.onActivityResult(requestCode, resultCode, data)
}
}
我嘗試添加參數GraphRequest所以我需要將它存儲到一個變量,像這樣:
val request: GraphRequest = GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback {
obj: JSONObject, response: GraphResponse ->
println(obj.toString())
println(obj.getString("email"))})
request.executeAsync()
但現在它編譯失敗
錯誤:執行任務':app:compileDebugJavaWithJavac'失敗。
Unable to read class file: 'C:\projects\social\app\build\tmp\kotlin-classes\debug\social\social\MainActivity$onCreate$1$onSuccess$1.class'
嗯..終於修好了。原來我只需要運行gradle clean。 –
很高興聽到@ Karlo – Haileapp