2016-08-05 10 views
0

Here is the Screenshot Facebookの認証情報を使用してアプリケーションにログインすると、ブラウザで正しく機能しません。しかし、Facebook Appからログインするとエラーになります。それは自動的に私のアプリケーションにリダイレクトされず、Facebookに残っている "あなたが要求したページはすぐに表示することはできません。一時的に利用できないかもしれません....."。前もって感謝します。ここ は私LoginActivityです:モジュールでfacebookを使用してアプリケーションにログイン:Facebook Appを使用するとエラーが発生する

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_log); 
     loginButton = (LoginButton) findViewById(R.id.login_button); 
     loginButton.setReadPermissions("email"); 
     mail = (EditText) findViewById(R.id.log_mail); 
     pass = (EditText) findViewById(R.id.log_pass); 
     callbackManager = CallbackManager.Factory.create(); 


     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(
        AccessToken oldAccessToken, 
        AccessToken currentAccessToken) { 
       // Set the access token using 
       // currentAccessToken when it's loaded or set. 
      } 
     }; 
     // If the access token is available already assign it. 
     accessToken = AccessToken.getCurrentAccessToken(); 

     AppEventsLogger.activateApp(this); 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       Toast.makeText(getApplicationContext(), "Logged in with fb", Toast.LENGTH_SHORT).show(); 

       System.out.println("onSuccess"); 


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

       GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 

        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 
         Log.i("LoginActivity", response.toString()); 
         // Get facebook data from login 
         Bundle bFacebookData = getFacebookData(object); 
         mail_id= bFacebookData.getString("email"); 
         prof_pic= bFacebookData.getString("profile_pic"); 
         f_name=bFacebookData.getString("first_name"); 
         l_name=bFacebookData.getString("last_name"); 
         bFacebookData.putString("img",prof_pic); 
         bFacebookData.putString("mail_id",mail_id); 
         bFacebookData.putString("fname",f_name); 
         bFacebookData.putString("lname",l_name); 


         Intent i = new Intent(LogActivity.this, HomeActivity.class); 
// 
          i.putExtras(bFacebookData); 
          startActivity(i); 
         // 
         Toast.makeText(getApplicationContext(),mail_id,Toast.LENGTH_LONG).show(); 



        } 
       }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook 
       request.setParameters(parameters); 
       request.executeAsync(); 

      } 

      @Override 
      public void onCancel() { 
       Toast.makeText(getApplicationContext(), "Log in Cancelled..!!", Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onError(FacebookException error) { 
       Toast.makeText(getApplicationContext(), "Error in log in,error is : " + error, Toast.LENGTH_SHORT).show(); 

      } 

     }); 


    } 

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

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     accessTokenTracker.stopTracking(); 
    } 

    private Bundle getFacebookData(JSONObject object) { 

     try { 
      Bundle bundle = new Bundle(); 
      String id = object.getString("id"); 

      try { 
       URL profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?width=200&height=150"); 
       Log.i("profile_pic", profile_pic + ""); 
       bundle.putString("profile_pic", profile_pic.toString()); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
       return null; 
      } 

      bundle.putString("idFacebook", id); 
      if (object.has("first_name")) 
       bundle.putString("first_name", object.getString("first_name")); 
      if (object.has("last_name")) 
       bundle.putString("last_name", object.getString("last_name")); 
      if (object.has("email")) 
       bundle.putString("email", object.getString("email")); 
      if (object.has("gender")) 
       bundle.putString("gender", object.getString("gender")); 
      if (object.has("birthday")) 
       bundle.putString("birthday", object.getString("birthday")); 
      if (object.has("location")) 
       bundle.putString("location", object.getJSONObject("location").getString("name")); 
      return bundle; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
+0

理由を確認できるようにコードを入力してください。 –

+0

@ArjunKasi投稿コードやエラーを投稿してください。ログインに関する詳細については、fbを参照してください。http://coderzpassion.com/android-using-facebook-login-application-using-latest-facebook-sdk/ –

+0

リダイレクトdev.facebookのアプリ設定ページのURL。 –

答えて

0

私はアンドロイド-ログインfacebook-SDKの最新バージョンを使用しているので、私は自分の携帯電話でFacebookアプリケーションを更新して、それはサポートのためissue.Thanks皆を解決しました。乾杯!!

0

Gradleのファイルをベース依存

compile 'com.facebook.android:facebook-android-sdk:4.7.0' 

次追加setContentView

FacebookSdk.sdkInitialize(YourActivity.this); 

はのonCreateで次のコードを追加する前に、FacebookのSDKを初期化します。

callbackManager = CallbackManager.Factory.create(); 
     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       if (CommonConstants.mDebug) Log.v(TAG, "onSuccess"); 

       final String accessToken = loginResult.getAccessToken().getToken(); 
       if (CommonConstants.mDebug) Log.v(TAG, accessToken); 
       GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 

        } 
       }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,first_name,last_name,email,gender, birthday"); 
       request.setParameters(parameters); 
       request.executeAsync(); 
      } 

      @Override 
      public void onCancel() { 
       if (CommonConstants.mDebug) Log.v(TAG, "onCancel"); 
       if (ViewDialog.kProgressHUD.isShowing()) { 
        ViewDialog.hideProgress(); 
       } 
      } 

      @Override 
      public void onError(FacebookException error) { 
       if (CommonConstants.mDebug) Log.v(TAG, error.toString()); 
      } 
     }); 

がonActivityResultに以下を追加します。

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

次のリンクには、アンドロイドのためのfacebook sdkのドキュメントをお読みください。https://developers.facebook.com/docs/android/このドキュメントは私を大きく助けます –

+0

私はcompile 'com.facebook.androidを追加しました: facebook-android-sdk:[4,5] 'は、https://developers.facebook.com/quickstarts/AppID/?platform=androidに基づくgradleで、私はログインマネージャクラスを使用していません – ArjunKasi

+0

ログインマネージャクラスを使用しますアプリとwebviewの両方に最適です。 –

関連する問題