2011-10-17 50 views
0

我一直在嘗試編寫與Facebook交互的Windows窗體應用程序以檢索具有獲取某些用戶信息權限的訪問令牌。我一直在嘗試使用下面的代碼來獲取自己的生日,但它一直給我提供400個錯誤的請求錯誤。基本上在運行此代碼之後,並且在身份驗證中登錄時,它會顯示一個包含用戶生日的消息框。在這種情況下,我在api.GET方法中使用自己的用戶標識。它似乎是訪問令牌的問題,因爲當我沒有傳入任何令牌時,我可以使用相同的代碼查看公共可用信息(如id),但是我打印出訪問令牌以進行檢查,似乎沒問題。任何幫助將非常感激。第一次在這裏張貼使用捕獲的訪問令牌檢索用戶的Facebook信息的問題

public partial class AccessTokenRetrieval : Form 
{ 
    private string accessToken=null; 


    public AccessTokenRetrieval() 
    { 
     InitializeComponent(); 
    } 

    private void accessTokenButton_Click(object sender, EventArgs e) 
    { 
     string getAccessTokenURL = @"https://graph.facebook.com/oauth/authorize?client_id=223055627757352&redirect_uri=http://www.facebook.com/connect/login_success.html&type=user_agent&display=popup&grant_type=client_credentials&scope=user_photos,offline_access"; 
     getAccessTokenWebBrowser.Navigate(getAccessTokenURL); 
    } 

    private void getAccessTokenWebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
    { 

     string successUrl = @"http://www.facebook.com/connect/login_success.html"; 

     string urlContainingUserAuthKey = e.Url.ToString(); 
     MessageBox.Show(urlContainingUserAuthKey); 

     int searchInt = urlContainingUserAuthKey.IndexOf(successUrl); 
     MessageBox.Show(searchInt.ToString()); 

     if (urlContainingUserAuthKey.IndexOf(successUrl) == -1) 
     { 
      string accessTokenString; 
      accessTokenString = Regex.Match(urlContainingUserAuthKey, "access_token=.*&").ToString(); 
      this.accessToken = accessTokenString.Substring(13, accessTokenString.Length - 14); 
      //100001067570373 
      //MessageBox.Show(accessToken); 
      accessTokenTextBox.Text = this.accessToken; 
      Facebook.FacebookAPI api = new Facebook.FacebookAPI(this.accessToken); 
      JSONObject me = api.Get("/100001067570373"); 
      MessageBox.Show(me.Dictionary["user_birthday"].String); 
     } 
    } 

回答

相關問題