2015-07-06 4 views
1

После реализации следующий, метод OnCancel вызывается:FB Войти Android

<activity 
      android:name=".FbLoginActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_fb_login" 
      android:theme="@style/FullscreenTheme" > 
     </activity> 

     <meta-data 
      android:name="com.facebook.sdk.ApplicationId" 
      android:value="xxxxxxxxxxxxxx"/> 
     <provider android:authorities="com.facebook.app.FacebookContentProvider456579934439214" 
      android:name="com.facebook.FacebookContentProvider" 
      android:exported="true" /> 


     <activity android:name="com.facebook.FacebookActivity" 
      android:configChanges= 
       "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/app_name" /> 

В деятельности:

public class FbLoginActivity extends Activity { 

    TextView tvTermsLink; 
    CallbackManager callbackManager; 
    String TAG="FbLoginActivity"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 

     setContentView(R.layout.activity_fb_login); 
     LoginButton loginButton = (LoginButton) findViewById(R.id.authButton); 

     loginButton.setReadPermissions(Arrays.asList("user_location", "email", "user_friends", "user_birthday", "user_likes", "user_work_history", "user_relationships", "user_relationship_details", 
       "user_education_history")); 


     tvTermsLink=(TextView) findViewById(R.id.fbl_tv_termsLink); 
     tvTermsLink.setText(Html.fromHtml("By logging in you accept the <a href=\"http://crownit.in/terms\">Terms & Conditions</a> ")); 

     tvTermsLink.setMovementMethod(LinkMovementMethod.getInstance()); 




     loginButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 

       } 

       @Override 
       public void onCancel() { 

       } 

       @Override 
       public void onError(FacebookException e) { 

       } 
      }); 


      } 
     }); 

    } 

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

После длительного отнесении интернет-ресурсы, я не могу понять, что случилось в коде. Любая помощь будет оценена.

+0

, что вы хотите позвонить? –

+0

Я хочу позвонить onSuccess ... – asdec90

+0

правильно ли вы создали отладочную клавишу? –

ответ

0

Если вы используете кнопку входа в систему по умолчанию для facebook, вам не нужно устанавливать событие onclick. вы можете использовать его так.

loginButton = (LoginButton) findViewById(R.id.login_button); 
 

 
List <String> permissionNeeds = Arrays.asList("user_photos", "email", 
 
\t "user_birthday", "public_profile", "AccessToken"); 
 
loginButton.registerCallback(callbackManager, 
 
new FacebookCallback <LoginResult>() {@Override 
 
\t public void onSuccess(LoginResult loginResult) { 
 

 
\t \t System.out.println("onSuccess"); 
 

 
\t \t String accessToken = loginResult.getAccessToken() 
 
\t \t \t .getToken(); 
 
\t \t Log.i("accessToken", accessToken); 
 

 
\t \t GraphRequest request = GraphRequest.newMeRequest(
 
\t \t loginResult.getAccessToken(), 
 
\t \t new GraphRequest.GraphJSONObjectCallback() {@Override 
 
\t \t \t public void onCompleted(JSONObject object, 
 
\t \t \t GraphResponse response) { 
 
\t \t \t \t Log.i("LoginActivity", response.toString()); 
 
\t \t \t \t try { 
 
\t \t \t \t \t id = object.getString("id"); 
 
\t \t \t \t \t try { 
 
\t \t \t \t \t \t URL profile_pic = new URL(
 
\t \t \t \t \t \t \t "http://graph.facebook.com/" + id + "/picture?type=large"); 
 
\t \t \t \t \t \t Log.i("profile_pic", 
 
\t \t \t \t \t \t profile_pic + ""); 
 

 
\t \t \t \t \t } catch (MalformedURLException e) { 
 
\t \t \t \t \t \t e.printStackTrace(); 
 
\t \t \t \t \t } 
 
\t \t \t \t \t String name = object.getString("name"); 
 
\t \t \t \t \t String email = object.getString("email"); 
 
\t \t \t \t \t String gender = object.getString("gender"); 
 
\t \t \t \t \t String birthday = object.getString("birthday"); 
 
\t \t \t \t } catch (JSONException e) { 
 
\t \t \t \t \t e.printStackTrace(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t \t Bundle parameters = new Bundle(); 
 
\t \t parameters.putString("fields", 
 
\t \t \t "id,name,email,gender, birthday"); 
 
\t \t request.setParameters(parameters); 
 
\t \t request.executeAsync(); 
 
\t } 
 

 
\t @Override 
 
\t public void onCancel() { 
 
\t \t System.out.println("onCancel"); 
 
\t } 
 

 
\t @Override 
 
\t public void onError(FacebookException exception) { 
 
\t \t System.out.println("onError"); 
 
\t \t Log.v("LoginActivity", exception.getCause().toString()); 
 
\t } 
 
});

если вы используете настроенную кнопку facebook, чем просто проверить мой ответ здесь facebook login with customized button

Смежные вопросы