2017-04-10 1 views
-1

내 사용자에게 페이스 북으로 가입 옵션을 제공하고 싶습니다. 내 세부 정보를 검색하고 사용자의 등록을 위해 내 서버에 피드하는 방법은 입니다. api를 사용하여 사용자를 내 서버에 등록하고 있습니다. 도와주세요 :사용자의 페이스 북 이메일 및 기타 정보 얻기

public class DashboardActivity extends AppCompatActivity { 

private TextView loginView; 
private LinearLayout signUpButtonParent, loginInButtonParent, signUpRoot, loginRoot; 
private View loginBorder, signUpBorder; 
private Button signUpWithEmailButton, loginWithEmailButton,loginFacebook; 
LoginButton signUpFacebook; 
private SharedPreferenceUtil sharedPreference; 


private CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dashboard); 
    FacebookSdk.sdkInitialize(this); 
    callbackManager = CallbackManager.Factory.create(); 

    signUpFacebook =(LoginButton) findViewById(R.id.facebookSignup); 
    loginFacebook =(Button) findViewById(R.id.loginFacebook); 
    signUpFacebook.setReadPermissions("email","user_photos","user_friends"); 

    setupViews(); 


} 

private void setupViews() { 

    final Typeface tf = Typeface.createFromAsset(getAssets(), "login_font.ttf"); 

    loginView.setTypeface(tf); 

    signUpFacebook.setOnClickListener(view -> 
     LoginManager.getInstance().logInWithReadPermissions(DashboardActivity.this,Arrays.asList("public_profile", "email"))); 

    signUpFacebook.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

     @Override 
     public void onSuccess(LoginResult loginResult) { 
      startActivity(new Intent(DashboardActivity.this, MainActivity.class)); 
     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(DashboardActivity.this, "Login was Cancelled", Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(DashboardActivity.this, "LogIn failed", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    callbackManager.onActivityResult(requestCode,resultCode,data); 
} 




} 

인터페이스 :

public interface ApiService { 
    @FormUrlEncoded 
@POST("signup") 
Observable<StatusItem> signUp(@Field("full_name")String full_name, @Field("phone") String phone, @Field("email") String email, @Field("password") String password); 

}

+1

중요 : app_id를 제거하십시오. 가능한 빨리 다시 설정하십시오. 이것을 공유하지 마십시오. FacebookSdk.sdkInitialize (this); -이 함수는 더 이상 사용되지 않습니다. Facebook SDK가 애플리케이션 시작시 자동으로 초기화됩니다. 주 프로세스에서 Facebook SDK를 사용하고 있고 SDK 초기화 완료시 콜백이 필요하지 않은 경우 이제 FacebookSDK.sdkInitialize에 대한 호출을 제거 할 수 있습니다. 콜백이 필요한 경우 코드에서 콜백을 수동으로 호출해야합니다. 그 외에도 현재 받고있는 오류와 수행 한 오류에 대한 정보를 공유하십시오. –

답변

0

그것을보십시오.

@Override 
public void onSuccess(LoginResult success) { 
AccessToken token = success.getAccessToken(); 
getFBMeData(token); 
} 



public void getFBMeData(AccessToken atoken) { 
    Profile.fetchProfileForCurrentAccessToken(); 
    GraphRequest request = GraphRequest.newMeRequest(
      AccessToken.getCurrentAccessToken(), 
      new GraphRequest.GraphJSONObjectCallback() { 

       @Override 
       public void onCompleted(JSONObject object, 
             GraphResponse response) { 
        // TODO Auto-generated method stub 
        if (object != null) { 
         Log.d("FBGraphJSONObject", object.toString()); 

         String id = Profile.getCurrentProfile() 
           .getId(); 
         String fName = Profile.getCurrentProfile() 
           .getFirstName(); 
         String lName = Profile.getCurrentProfile() 
           .getLastName(); 
         String gender = object.optString("gender"); 
         String dob = object.optString("birthday"); 
         String locationName = ""; 
         JSONObject location = object 
           .optJSONObject("location"); 
         if (location != null) { 
          locationName = location.optString("name"); 
         } 
         String pictureUrl = "", email = ""; 
         JSONObject picture = object 
           .optJSONObject("picture"); 
         JSONObject data = picture.optJSONObject("data"); 
         try { 
          email = URLDecoder.decode(
            object.optString("email"), "UTF-8"); 
          if (picture != null) { 
           pictureUrl = URLDecoder.decode(
             data.optString("url"), "UTF-8"); 
          } 
         } catch (UnsupportedEncodingException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 




       } 
      }); 
    Bundle params = new Bundle(); 
    params.putString("fields", "gender,email,birthday,location,picture"); 
    request.setParameters(params); 
    request.executeAsync(); 


} 
관련 문제