2016-12-08 60 views
0

我試圖通過Facebook驗證我的應用程序。我爲編制25 compileSdkVersion 在AndroidManifest.xml我已經啓用 <uses-permission android:name="android.permission.INTERNET" />嘗試與Android的Facebook身份驗證時缺少INTERNET權限

我使用的是從Android按鈕稱爲LoginManager tecnique

btnFb = (Button) findViewById(R.id.btnFb); 
btnFb.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     getPermission(); 
     LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email")); 
    } 
}); 

我相關的registerd回調的LoginManager

FacebookSdk.sdkInitialize(MainActivity.this); 
    callbackManager = CallbackManager.Factory.create(); 
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

     @Override 
     public void onSuccess(LoginResult result) { 
      Log.i("LoginActivity","onSuccess Facebook Login"+result); 
      GraphRequest request = GraphRequest.newMeRequest(
        AccessToken.getCurrentAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject jsonObject, GraphResponse response) { 
          Log.d("","onCompleted jsonObject: "+jsonObject); 
          Log.d("","onCompleted response: "+response); 
         } 
        }); 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,name,link,cover,email"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
     } 

     @Override 
     public void onCancel() { 
      // TODO Auto-generated method stub 
      Log.i("LoginActivity","Login cancelled"); 
     } 

     @Override 
     public void onError(FacebookException e) { 
      // TODO Auto-generated method stub 
      Log.e("LoginActivity","ERROR: "+e.getMessage()); 
      e.printStackTrace(); 
     } 
    }); 

而且在Facebook之前調用請求允許使用下面的代碼

private void getPermission(){ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) 
       != PackageManager.PERMISSION_GRANTED){ 

       requestPermissions(new String[]{Manifest.permission.INTERNET}, 
         1); 

     } 
    } 
} 

儘管我嘗試驗證失敗

Caught exception: java.lang.SecurityException: Permission denied (missing INTERNET permission?) 
    at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:190) 
    at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:159) 
    at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82) 
    at it.implementa.ztfacebook2.MainActivity.onActivityResult(MainActivity.java:130) 
    at android.app.Activity.dispatchActivityResult(Activity.java:6597) 
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3726) 
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3773) 
    ...... 

有什麼建議?由於

+1

你有權限清單中的正確位置?也就是說,''標籤之外?另外,你不需要在運行時請求那個。 –

+1

謝謝邁克我把用戶權限標籤放在應用程序標籤裏,現在沒關係 –

回答

0

你有使用清單這些行應用程序上面的「」的

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />