0
アカウントに結合された一意のユーザIDを使用してFirebaseにデータを挿入しています。アレイの1つに格納されたIDを持つfirebaseデータベースから情報を取得する方法
ユーザーには、そのIDを持つユーザーが挿入したデータのみを表示できるようにします。
ユーザが1台の電話機でDBに挿入し、ログインしていて同じIDを持つ別の電話機に移動すると、そのアカウントの特定のuser_idを持つアレイだけが表示されるようになります。私が今やっている何を
:
を私は、Googleの宣誓でUSER_IDを得る:
package it.bearz.view;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
public class login extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener{
SignInButton signInButton;
GoogleApiClient mGoogleApiClient;
private static final String TAG = "SignInActivity";
private static final int RC_SIGN_IN = 9001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
signInButton = (SignInButton) findViewById(R.id.sign_in_button);
signInButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.sign_in_button:
signIn();
break;
}
}
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult: " + result.isSuccess());
if(result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
Log.d("Login", "Hello! " + acct.getId());
getSharedPreferences("USER", MODE_PRIVATE)
.edit()
.putString("user_id", acct.getId())
.apply();
Intent intent = new Intent(this, first.class);
startActivity(intent);
}else{
}
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.d(TAG, "onConnectionFailed" + connectionResult);
}
}
その後、私は(まだuser_idのではなく、実際の動画IDを使用します)データを挿入します。
SharedPreferences uid = this.getSharedPreferences("USER", MODE_PRIVATE);
String user_id = uid.getString("user_id", null);
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference main_db = database.getReference();
//Use the new reference to add the data
main_db.push().setValue(new user_object(user_id, "shfgfshgf"));
データベースには、次のようになります。
これを行う簡単な方法はありますか?